例題 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 文の条件が成立することになる. |