-4

テキスト ファイルからの出力の解析に問題があります。文字の間にパイプ記号を追加して、egrep と同様に複数検索を行いたい場合、テキスト ファイルは次のようになります。

service entered the stopped state,critical
service entered the running state,clear

コード:

open(my $data, '<', $Config_File) or die "Could not open '$Config_File"
my $reg_exp;
my $severity;
my @fields=();
while (my $line = <$data>) 
{  
   chomp $line;   
   if(!$line =~ /^$/)
   {
   @fields = split "," , $line;
   $reg_exp = $fields[0];
   $severity = $fields[1]; 
   print $reg_exp;
   }
 }

 #print $fields[0];
 #last unless defined $line;

 close($data);

期待される出力

service entered the stopped state|service entered the running state
4

1 に答える 1

1

実際に文字列を連結する必要があるだけです。最も簡単な方法は、 を配列にプッシュし$fields[0]、入力が完了するまで待機して出力することです。すなわち:

my @data;
while (my $line = <$data>) {
   next if $line =~ /^$/;            # no need to chomp
   my @fields = split /,/, $line;
   push @data, $fields[0];
}
print join("|", @data), "\n";

このコードで何か別のことを達成しようとしているように感じます。これはいわゆるXY 問題です。

于 2013-02-08T09:35:37.037 に答える