ファイルを読んだり書いたり。
1.入力ファイルの内容をを指定の正規表現で置換して、ファイルに出力するプログラム
#!/usr/bin/env perl -w use strict; print "in-file: "; chomp(my $infile = <STDIN>); open INFILE, "< $infile" or die "No such file named $infile\n"; print "out-file: "; chomp(my $outfile = <STDIN>); open OUTFILE, "> $outfile" or die "No such file named $outfile\n"; print "pattern: "; chomp(my $pattern = <STDIN>); print "new-string: "; chomp(my $newstr = <STDIN>); while (<INFILE>) { s/$pattern/$newstr/; print OUTFILE; }
new-stringには$1とか\u\Lとかのエスケープ文字を指定しても、その意味では動作しない。たんにその見たままの文字列が表示されるだけ。$newstrに入った時点で評価されてるから。
2. コマンドラインから渡したファイルのパーミッションを表示するプログラム
#!/usr/bin/env perl -w use strict; sub filetest { my $fname = shift; my $status = "$fname:\t"; unless (-e $fname) { return $status .= "not exists"; } if (-r $fname) { $status .= 'r'; } else { $status .= '-'; } if (-w $fname) { $status .= 'w'; } else { $status .= '-'; } if (-x $fname) { $status .= 'x'; } else { $status .= '-'; } $status; } foreach (@ARGV) { print &filetest($_) . "\n"; }
filetestサブルーチンはファイルテストの内容に応じた文字列を返します。実行結果は、
ex10-1.pl: rw- ex10-1.pl~: rw- ex11-1.pl: rwx ex11-1.pl~: rwx ex11-2.pl: rwx ex11-2.pl~: rwx
という風。解答だと配列を使って出力が工夫されていた。
- 作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/05
- メディア: 単行本
- 購入: 15人 クリック: 474回
- この商品を含むブログ (294件) を見る