2

変数が1つある場合:ファイルテキスト全体をそれに割り当てました

$var = `cat file_name`

ファイルで、「mine」という単語が 17 行目にあり (場所は利用できませんが、例を示しているだけです)、単語「mine」の N 行 (たとえば 10) 行の後にパターン「word」を検索したいとします。 ' それらの行に存在するかどうか。配列を使用せずに正規表現でそれを行うにはどうすればよいですか '

例:

$var = "I am good in perl\n but would like to know about the \n grep command in details";

特定の行で特定のパターンを検索したい (2 行目から 3 行目のみ)。配列を使用せずにどうすればよいですか。

4

3 に答える 3

1

ここで配列を使用しない正当なケースがあります - ファイルが法外に大きい場合です。

これはかなり具体的な要件です。その Perl のイディオムを見つけるために茂みをぶらつくのではなく、サブルーチンを処方します。

 sub n_lines_apart {

    my ( $file, $n, $first_pattern, $second_pattern ) = @_;

    open my $fh, '<', $file or die $!;

    my $lines_apart;

    while (<$fh>) {

        $lines_apart++ if qr/$first_pattern/ .. qr/$second_pattern/;
    }

    return $lines_apart && $lines_apart <= $n+1;
}

警告

上記のサブルーチンは、1 つのファイルで複数の一致を処理するようには設計されていません。それを読者の練習にしましょう。

于 2012-07-12T10:58:14.860 に答える