連続して表示させるperlプログラムを作成したのですが、うまく動きません。どこが悪いのでしょうか。
ファイル名の指定は、ワイルドカードを使っています。
$dpass = 'c:\data\CH';
$fend = '_*.log';
for ($x = 1; $x <= 16; $x++){
$p_dat = $dpass.$x.$fend;
$filename = glob $p_dat;
print "$filename \n";
}
配列が返るから
$filename = glob $p_dat; print "$filename \n";
を
@filename = glob $p_dat; print "@filename \n";
で一応動くと思います
URLはダミーです
http://www.ipa.go.jp/security/awareness/vendor/programming/a04_0...
http://perldoc.perl.org/functions/glob.html
#すごい適当なコードです。
use strict;
my ($dpass,$fend) = ('c:\data\CH','_*.log');
for (my $x = 1; $x <= 16; $x++){
my $p_dat = $dpass.$x.$fend;
#print "try:".$p_dat."\n";
my $isPresent = glob ($p_dat);
if(defined($isPresent)){
print "found:".$isPresent."\n";
}
}
先にファイルの一覧を取得してから処理してはいかが
my @filename = grep { /CH\d+_/ } glob './data/CH*.log';
for my $file (@filename) {
print "$file\n";
}
動きました。言われてみると確かに、、、ありがとうございます。