Как вставить подстроку в каждую строку в Perl - PullRequest
1 голос
/ 11 апреля 2010

Мой код, как показано ниже, Как удалить пробел после добавления привет. к каждой строке.

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

my $fh = \*DATA;  

#my($line) = $_;
while(my $line = <$fh>)
{
    print "Hello.".$line;
    chomp($line);

}


__DATA__  
Member Information 
    id = 0  
    name = "tom" 
    age = "20"

Выход:

D:\learning\perl>test.pl
Hello.Member Information
Hello.    id = 0 # I want to remove the white space between Hello. and id
Hello.    name = "tom" # same as above
Hello.    age = "20" # same

D:\learning\perl>

Ответы [ 3 ]

2 голосов
/ 11 апреля 2010

Если в каждой строке 4 пробела, вы можете использовать:

substr $line, 0, 4, "";
2 голосов
/ 11 апреля 2010

Одним из способов будет удаление начальных пробелов из самих данных как:

__DATA__  
Member Information 
id = 0  
name = "tom" 
age = "20"

Другим способом было бы удалить начальный пробел из $line перед печатью:

Просто добавьте это перед print:

$line=~s/^\s+//;
1 голос
/ 11 апреля 2010

Я бы удалил строку и добавил привет за один раз

while ( <DATA> ) {
    s/ ^ \s+ /Hello./x ;
    print ;
}

^ = привязка в начале строки

\ s + = один или несколько пробелов

/x = разрешить дополнительное пространство в регулярном выражении для ясности

или более многословно

while(my $line = <$fh>)
{
    $line =~ s/ ^ \s+ /Hello./x ;
    print $line ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...