Как вставить слово в строку в Perl? - PullRequest
1 голос
/ 28 апреля 2010
#!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

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

безопасный метод -

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

затем объединить любым способом

1 голос
/ 28 апреля 2010

Захватить начало строки в $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 .

...