Ando Computer Behavior R&D
Perl tips -- ファイル/引数
- 引数を取得する(@ARGV)
- ファイルを読み込む(foreach版)
- ファイルを読み込む(@a = <IN>;版)
- ファイルがあるかチェックする(-f)
- ファイルを検索する
引数を取得する
@ARGVを使います。基本です。
Windowsの場合は\nではなく、
\r\nであるところも注目です。
#!/usr/bin/perl
$i = 0;
foreach(@ARGV) {
print $i . ":" . $_ . "\r\n";
$i++;
}
#
ファイルを読み込む(foreach版)
これも基本です。最初は基本が続きます
最初は「ファイルを開け、さもなくば死ね
(Open file, or die)」と覚えましょうw
#!/usr/bin/perl
open(IN,"index_ja.html") || die "$!"; # ファイルを開けさもなくば死ね。
foreach(<IN>) {
print $_;
}
#
ファイルを読み込む(@a = <IN>;版)
ちょっとひねった版です。
何度も<IN>でforeachするくらいならこっちにする手もあります。
#!/usr/bin/perl
open(IN,"index_ja.html") || die "$!";
@data = <IN>;
foreach(@data) {
print $_;
}
#
ファイルを検索する
こんな感じです。
#!/usr/bin/perl
foreach (<.\/*>) {
if (-f $_) {
print "file:". $_ . "\r\n";
} elsif (-d $_) {
print "dir:" . $_ . "\r\n";
} else {
print "other:" . $_ . "\r\n";
}
}
#
さらにフォルダの仲間でチェックしたい場合は
subを使って以下のようにします。
#!/usr/bin/perl
&fileList("..");
exit(0);
#
sub fileList {
local($file) = @_;
foreach (<$file\/*>) {
if (-f $_) {
print "file:". $_ . "\r\n";
} elsif (-d $_) {
&fileList($_);
}
}
}
#