たっぴ(パソコン質問掲示板)

ログイン

メニュー
■ トップ
■ 質問する
■ 回答を見る・回答する
■ 参加者のひろば / テーマ別
■ コミュニケーション道場
■ 「たっぴ」の使い方
■ 「たっぴ」のルール・心得

エキスパート トータルランキング
Rank ニックネーム E-Point
1 位 sriver 1372 p
2 位 げんき(^^)/ 810 p
3 位 うにゅ 607 p
4 位 mory 512 p
5 位 saru 510 p
6 位 Clark 481 p
7 位 taknt 474 p
8 位 459 p
9 位 あき◆ 387 p
10 位 おやぢ 366 p
※月間ランキング参加者がありませんでした。



E-Point還元プログラム
E-Point 月間獲得ポイントより回答者様へ現金を還元いたします。

対象還元金額
全員に(E-Point)×20円
支払いは5,000円以上からとなります。
還元金の支払いはご指定銀行口座への振込みとなります。

『マナーの良い質問者』マーク
以下の条件を満たす質問者様には
  『マナーの良い質問者』マーク

が付きます。
  1. 登録していて
  2. 「終了」していない質問がひとつ以下で
  3. 終了した質問で「○○○○○」という言葉の投稿がある
3番目の条件はひらがなです。もうお判りですね。(漢字、カタカナもOKかも。。。)
ぜひマークをGetしてください。









《戻る

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 )
 
〜 回答の受付を終了しました 〜


回答、お礼・報告などメッセージの追加

ニックネーム:

まったく新しい内容の質問、質問者以外の方の質問は、メニューの「質問する」から新たに質問してください。

詳細: 内容を詳しく言うと。。。

※「たっぴ」に登録すると質問にポイントが付けられます。 その他便利な機能も使えます!》新規登録 》Help

※http://.....は自動的にハイパーリンクに変換します。
※<pre></pre>が使用できます。     ※引用は行の先頭に「>」を付けてください。自動的に色が付きます。




利用規約 特定商取引に関する法律に基づく表記 プライバシーポリシー 問合せ