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 に答える