- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perl サブルーチンでのファイル出力結果おかしい)
perl サブルーチンでのファイル出力結果おかしい
このQ&Aのポイント
- Perlサブルーチンでファイル出力結果がおかしい場合の解決方法
- カレントディレクトリ内のファイル出力結果が不正な場合の対処方法
- ActivePerl(v5.16.3)でのファイル出力結果が正しく表示されない問題の解決
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> &do_dir('.'); > sub do_dir{ > open(FILE2,'>list.txt') or die "$!"; > ... > &do_dir($filename); > ... > close(FILE2); > } 質問のコードでは、do_dir サブルーチンを呼び出す毎に list.tex を再オープンするので、それまでに書かれた内容は消去されることになります。また、サブルーチンから戻った後は、ファイルハンドルがクローズされているので、その後のファイルは画面に書きだされますが、ファイルには記録されません。サブルーチン内の FILE2 のコードを外に出せば、すべてのファイルが書き出されると思います。 open(FILE2,'>list.txt') or die "$!"; &do_dir('.'); close(FILE2);
その他の回答 (1)
- maiko0333
- ベストアンサー率19% (839/4401)
回答No.1
当該言語は知らないので見た感じですが、 sub do_file{ my $filename=shift; return unless ($filename=~/\.*$/); print "$filename\n"; print FILE2 "$filename\n"; } print前にreturnしていいの?
質問者
お礼
対象以外のファイルを処理しないように returnさせているだけです。
お礼
do_file()の方だけに気を取られていて do_dir()が再帰呼び出しされていることを見落としていました。 教えていただきました方法で正しく表示されるようになりました。 ありがとうございました。