例題 1テキストファイルを入力とし,その中で "printf" という文字列が登場する行だけを表示するような Perl スクリプト find_printf.pl を作りなさい. ただし,行番号もあわせて出力すること.
(実行例)
foo.c の中の 9 行目と 16 行目に printf が登場:
解答例$n = 0; while ( $line = <> ){ $n++; if ( $line =~ /printf/ ){ print $n, ":", $line; } } 解説(1)テキストファイルの内容を行番号付きで出力これに関しては,前回の例題1 で学習済なので説明は割愛する. 以下に示すように,解答例スクリプトの大部分は以前の例題と同じである: $n = 0; while ( $line = <> ){ $n++; if ( $line =~ /printf/ ){ print $n, ":", $line; } }
(2)変数 $line の中に "printf" という文字列が含まれるか?
目的の「パターン」が「変数」の中に登場する場合のみ何か処理を実行したい場合, 次のようなスクリプトを使用するとよい: if ( 変数 =~ /パターン/ ){ 実行したい処理; } 上の解答例の場合, $n = 0; while ( $line = <> ){ $n++; if ( $line =~ /printf/ ){ print $n, ":", $line; } }となっている. つまり,変数 $line の内容を調べ,その中に printf というパターンが含まれていれば if 文の条件が成立することになる. |