2017-04-07 40 views
-1

我已经将文件的所有行复制到数组,并循环此数组进行模式匹配,一旦模式匹配,我想将行添加到相同的数组并打印在另一个文件中。我想在使用Perl找到匹配模式后添加元素到阵列

my @lines = <FILE_IN>; 
foreach my $line (@lines){ 
if($line =~m/\s(\w*)_region\s/){ 
print $line; 
} 

我试图直到模式匹配,并希望在此搜索后添加一个元素。

+0

我@lines = ; foreach my $ index(reverse 0 .. $#lines){if($ lines [$ index] =〜m/\ s(\ w *)_ region \ s){splice @lines($ index,0,“/ t $ string \ n“);}}这为我工作。 – user43102

回答

0
open my $ifile,'<:encoding(UTF-8)', '/path/to/file.txt' || die $!; 
while (my $line = <$ifile>) { 
    chomp $line; 
    if ($line =~m/\s(\w*)_region\s/x) { 
     print $line 
    } 
} 
close $ifile; 
+1

请考虑添加一些说明。这个代码如何解决这个问题。 – Darshana

+1

虽然这段代码片段是受欢迎的,并且可以提供一些帮助,但它会[如果包含解释](/ meta.stackexchange.com/q/114762)*如何*和*为什么*会大大改进问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –