2
#!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

然后我尝试在比赛编号(0104)之后插入男性,我用样式替换了代码。

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

实际上我想要输出。谢谢你。

1 0104 male Mike Lee 2:01:48
4

2 回答 2

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

$1perlreref中描述的特殊变量。

于 2010-04-27T23:15:46.440 回答
1

安全的方法是

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

然后以任何你想要的方式连接

于 2010-04-27T23:16:41.430 回答