如何在Perl中将字串插入字符串中?

问题描述:

#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 
use Data::Dumper; 

my $fh = \*DATA; 

while(my $line = <$fh>) 
{ 

    $line =~ s/ ^/male /x ; 
    print $line ; 
} 

__DATA__ 
1 0104 Mike Lee 2:01:48 

输出如何在Perl中将字串插入字符串中?

male 1 0104 Mike Lee 2:01:48 

然后我试图插入男性后racenumber(0104),I与风格替换的代码。

$line =~ s/ ^\d+\s+\d+\s+ /male /x ; # but failed

Acturally我想要的输出。谢谢。

1 0104 male Mike Lee 2:01:48 

捕获的字符串的开头到$1

use strict; 
use warnings; 

my $fh = \*DATA; 

while(my $line = <$fh>) 
{ 

    $line =~ s/ ^(\d+\s+\d+\s+) /${1}male /x ; 
    print $line ; 
} 

__DATA__ 
1 0104 Mike Lee 2:01:48 

输出:

1 0104 male Mike Lee 2:01:48 

更新:$1perlreref描述一个特殊的变量。

+0

@toolic。感谢您的**一美元**。我google了一下,发现这个'http:// *.com/questions/1036285/what-does-1-mean-in-perl' – 2010-04-27 23:20:49

+0

我用另一个链接更新了我的答案,描述了$ 1。 – toolic 2010-04-27 23:27:14

安全的方法是

chomp $line; 
@tmp = split//, $line; 

再以任何方式串接你想