No. | 質問・回答 | おれい |
|
[98992] perl: ディレクトリ中のファイルすべてを処理 |
|
|
OS: Windows XP
ソフトウェア名/バージョン:active perl
ハード機種名/型番:VAIO
初歩的な質問で申し訳ございません。
どうやってもエラーが出てしまうので、こちらでアドバイスを頂けると幸いです。
ディレクトリ中のテキストファイルすべてに対し同じ処理をするプログラムを
動かしたのですが、No such fileと出てしまいます。
具体的には、
my $dirname='.';
opendir(DIR, $dirname) or die "$dirname: $!";
while (my $dir=readdir(DIR))
{next unless (-f $dir);
next unless ($dir=~/\.txt$/);
print $dir, "\n";
open(FILE, '$dir') or die "$dir: $!";
と書いており、printのところではきちんとテキストファイル名が表示されます。
それが、openのところでは no such fileとなってしまいます。
$dirの代わりにファイル名を指定してやれば動きますが、
それだと100以上もあるテキストファイルを処理するには時間がかかってしまいます。
もうすでにここで2日以上足止めを食らっておりまして、
大変恐れ入りますが、どなたかPerl初心者の私に救いの手を差し伸べていただけると
大変有難く存じます。
よろしくお願いいたします。
hio (未登録) 2007年9月1日18:35
|
|
|
|
[98999] |
シングルクオートで囲むと変数は展開されません。Perlの仕様です。
クオートしない
open(FILE, $dir)
またはダブルクオート
open(FILE, "$dir")
でうまくいくと思います。
おかしな場合はとにかく確認しましょう。print '$dir'; をすると仕様を知らなくてももしかすると気づいたかもしれませんね。できる限り単純に、そのままを確認しましょう。
どーん (15) 2007年9月1日23:32
|
|
|
|
( 参照数:2565 日平均:0.4 ) |
|
〜 回答の受付を終了しました 〜 |