#!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
输出
male 1 0104 Mike Lee 2:01:48
然后我尝试在racenumber(0104)之后插入男性,我用样式替换了代码。
$line =~ s/ ^\d+\s+\d+\s+ /male /x ; # but failed
实际上我想要输出。谢谢。
1 0104 male Mike Lee 2:01:48
答案 0 :(得分:1)
将字符串的开头捕获到$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
更新:$1
是perlreref中描述的特殊变量。
答案 1 :(得分:1)
安全方法是
chomp $line;
@tmp = split / /, $line;
然后以任何你想要的方式连接