ファイルを読んだり書いたり。
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件) を見る