正規表現に一致するファイル行を取得する次のより簡単な方法はありますか?
open my $fh, '<', $file or die "Cannot open $file: $!";
while ( my $line = <$fh> ) {
next unless $line =~ m/^foo\/([^\/]+\/?)*==/;
chomp($line);
$line =~ s/==$//g;
$search_result_set{$line} = 1;
}
答え1
@lines = grep s{^foo/([^/]+/?)*\K==\n?\z}{}, <$fh>;
@lines
パターンに一致する行は、後続の行が削除された配列に保存されます==\n
。$
タイトルの終わりと\n
末尾のタイトルの前にある内容を一致させます。ここでは、改行文字(存在する場合)を削除して効果的に作業を完了するために\n?\z
(オプションでタイトルの\n
末尾()が続きます)を使用します。交換するセクションの先頭を表示します。\z
chomp
\K