definedで調べなくてもmy $fhでOK
Cross the Sea: Three Tips About Perl I Have Known in Recent Days [cross-the-sea.blogspot.com]
if ( $error_contents ){
unless ( defined $fh ){
open ($fh, ">$dir_store/report.txt");
}
print $fh "$error_contents\n";
}
んーこれはかなり旧式な書き方。
これだと、$fhがスコープの外に漏れるし、元もとなんかの用途で使った$fhを再利用したいって言う意味ですよね。そんなどこの馬の骨ともわからん変数を再利用するんだったら、ローカル変数として$fhを使った方がいいので、
if ( $error_contents ) {
open my $fh, '>', "$dir_store/report.txt" or die $!;
print $fh "$error_contents\n";
close $fh;
}
こんな感じに書く方が一般的だと、CPAN Authorなのに社内で全然頼りにされていない人がいってた。ていうかPerlベストプラクティスあたりにぐっつら書いてる。
あと、openは3項でやった方がいいです。ファイル名に変な文字が入っているとヤバいからです。
参考:
- ファイルオープンの2種類の記述方法 - Perl入門~サンプルコードによるPerl入門~ [d.hatena.ne.jp]
- 404 Blog Not Found:perl - 勝手に添削 - Perl入門#1@ITPro [blog.livedoor.jp]
- Perl 2008年のファイルオープン - てっく煮ブログ [d.hatena.ne.jp]
(2009-3-25 14.38修正)
個人的には
open ( my $fh, '>', "$dir_store/report.txt" ) or die $!;
の書き方が好きなので最初そうしていましたが一般的とか言う意味ではどうかなーて思ったので、
open my $fh, '>', "$dir_store/report.txt" or die $!;
に直しました。
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/44461661
この記事へのトラックバック一覧です: definedで調べなくてもmy $fhでOK:






![森田 創: WEB+DB PRESS 総集編 [Vol.1~60]](http://ecx.images-amazon.com/images/I/51aE58LxWlL._SL75_.jpg)
















![: 電子ルーペ ViewPe[ビューペ] 3R-MSV35 マイクロスコープ デジタル顕微鏡 高機能 低価格 読書 植物 研究 肌チェック](http://ecx.images-amazon.com/images/I/41erkiQgAsL._SL75_.jpg)





![: Optimus bright [docomo L-07C] 対応 予備バッテリー 1500mAh BL-44JN](http://ecx.images-amazon.com/images/I/41gjqsDjq%2BL._SL75_.jpg)










![: パンツの穴 [DVD]](http://ecx.images-amazon.com/images/I/21R9SEY1HPL._SL75_.jpg)

















