2013-05-14 61 views
0

我使用打開3和打印行如下一個一個接一個做一些解析後。我不想一行一行地打印我想一次保存和打印我該怎麼做?打印sysout行,從單打開3

while(my $nextLine=<HANDLE_OUT>) {  
    chomp($nextLine); 
    if ($nextLine =~ m!<BEA-!){ 
     print "Skipping this line (BEA): |$nextLine|\n" if $debug; 
    } 
    print $nextLine."\n"; 
} 

回答

1

如果您不希望任何待打印的行做,而你遍歷文件句柄,我會做這樣的事情:

該數據結構匿名數組的散列(調試和輸出)。

my %handle_output = ( 
    debug => [], 
    output => [], 
); 


while(my $nextLine=<HANDLE_OUT>) {  
    chomp($nextLine); 
    if ($nextLine =~ m!<BEA-!){ 
     push(@{$handle_out{debug}}, $line) if $debug; 
    } else { 
     push @{$handle_output{output}}, $line; 
    } 
} 
for my $line (@{$handle_output{output}}) { 
    print $line . "\n"; 
} 
+0

如果我使用類似 – constantlearner 2013-05-14 14:32:30

+0

@constantlearner的東西,可以使用back tick – chrsblck 2013-05-14 14:38:58

1

你只是想將它存儲在一個變量,然後打印它?只需將其附加到循環中的變量即可。或者我誤解了?

my $out = ''; 
while(my $nextLine=<HANDLE_OUT>) {  
    chomp($nextLine); 
    if ($nextLine =~ m!<BEA-!){ 
     print "Skipping this line (BEA): |$nextLine|\n" if $debug; 
     next; # I'm guessing you don't want to include these lines, either 
    } 
    $out .= $nextLine."\n"; 
} 
print $out;