0

したがって、ファイルを解析する必要があり、何かがパターンに一致する場合は、何かに置き換えます。

while(<$ifh>) {
  s/(.*pattern_1*)/$1\nsome more stuff/ ;
  s/(.*pattern_2*)/$1\neven more stuff/;
  s/(.*pattern_3.*)// ;
  # and so on ...
  print $ofh $_;
}

質問: この正規表現ルールのリストをファイルに含める最も簡単な方法は何ですか (sed '-f' オプションに似たもの)?

編集:おそらく少し明確にする必要があります。regexp ルールを別のファイル (解析済みファイルではありません - これは良かったのですが、ありがとう!) に含める必要があるため、ハードコードされません。したがって、基本的に外部ファイルは 's//' 行で構成する必要があります。もちろん、これはおそらく foreach ループと eval、または sed への外部呼び出しでも実行できますが、もっと良いものがあると思います。

よろしく、 Wojtek

4

2 に答える 2

0

パターンを作成して Perl リストに保存し、入力ループでパターンを単純に繰り返すことができます。

my @patterns = ( qr/pattern1/, qr/pattern2/, qr/pattern3/, etc..);
while(<$ifh>) {
   for my $pattern (@patterns) {
      s/($pattern)/$1\neven more stuff/;
   }
   print $ofh $_;
}
于 2013-10-29T13:01:34.107 に答える