-1

Perlに関する私の質問は、Pythonに関する質問と非常によく似てい ます。ドキュメント内でキーワードを検索し、Pythonの元のキーワードの設定された行数内で後続のキーワードを検索するにはどうすればよいですか。

これには、元のキーワードの近くにあるキーワードのリスト(たとえば、4つの単語のリストがある場合)から1つのキーワードを検索し、一致したときに行の範囲を印刷する(たとえば、プラスマイナス5行)ことが含まれます(元のキーワードからプラスマイナス20行と言います)

可能であれば2つの拡張機能:

内線1:印刷物でキーワードを強調表示

Ext 2:ディレクトリからすべてのファイルを検索し、ファイル名をプリントアウトに追加します(1行のファイル名の後に、ファイルから抽出された行が続きます)

同様の例を紹介してもよろしくお願いします...

4

1 に答える 1

1
  1. File を適切な配列として読み込みます。

    my @line = <FILE>;
    
  2. 最初の単語を検索:

    my $i;
    foreach $i (0 .. $#line) {
      last if $line[$i] =~ /$firstWord/i;
    }
    
  3. 配列スライスを使用して周囲を取得します。

    my @surrounding = @line[$i-5 .. $i+5];
    

    ただし、次のようなインデックスチェックを使用する必要があります

    [0<=$i-5 ? 0 : $i-5 .. $i+5<@line ? $i+5 : $#line]
    
  4. 繰り返す
  5. 利益

残りは読者の演習として残します。

ハイライト用に書きます

    $line[$i] =~ s{($firstWord)}{<strong>$1</strong>};

出力媒体によって異なります。mapはあなたの友達です。

于 2012-07-12T15:24:16.557 に答える