2011-10-08 91 views
-1

我使用以下perl腳本在每一行上查找比較(並將它們打印出來)。我試圖瞭解如何刪除其中一個配音行(保存當前文件或輸出到一個新的)。完整的腳本:http://pastebin.com/Vn1V0Uq2在Perl中刪除一行

while (@lines) { 
my ($line, @found) = shift @lines; 
my $re = qr/\Q$$line{data}\E$/;    # search token 
@lines = grep {        # extract matches from @lines 
    not $$_{data} =~ $re && push @found, $_ 
} @lines; 
if (@found) {        # write the report 
    print "line $$_{line}: $$_{data}\n" for $line, @found; 
    print "\n"; 
} 
} 

回答

0

如果我理解你的權利,你試圖刪除包含早期的線條爲子的一個任意行。如果是的話,這應該工作:

my @output; 
foreach my $line (@lines) { 
    push @output, $line 
     unless grep index($line->{data}, $_->{data}) >= 0, @output; 
} 

編輯:我錯過了你的「行」是hashrefs,而不是純字符串的事實。固定。