dataディレクトリにある。CH1******, CH2*******,CH3******....CH16******というデータファイルのファイル名を

連続して表示させる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";
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/04/19 18:44:05
  • 終了:2008/04/26 18:45:02

回答(3件)

id:iww No.1

いわわ回答回数101ベストアンサー獲得回数102008/04/19 19:09:00

ポイント35pt

配列が返るから

$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...

id:youkan_ni_ocha

動きました。言われてみると確かに、、、ありがとうございます。

2008/04/19 20:08:00
id:nao_38 No.2

nao_38回答回数1ベストアンサー獲得回数02008/04/19 19:30:36

ポイント35pt

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";

}

}

id:cross99 No.3

cross99回答回数4ベストアンサー獲得回数02008/04/24 11:27:36

ポイント10pt

先にファイルの一覧を取得してから処理してはいかが

my @filename = grep { /CH\d+_/ } glob './data/CH*.log';

for my $file (@filename) {

print "$file\n";

}


http://q.hatena.ne.jp/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません