| トップページ |

2009.03.25

definedで調べなくてもmy $fhでOK

このエントリーをはてなブックマークに追加 mixiチェック

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項でやった方がいいです。ファイル名に変な文字が入っているとヤバいからです。

参考:

(2009-3-25 14.38修正)

個人的には

open ( my $fh, '>', "$dir_store/report.txt" ) or die $!;

の書き方が好きなので最初そうしていましたが一般的とか言う意味ではどうかなーて思ったので、

open my $fh, '>', "$dir_store/report.txt" or die $!;

に直しました。

2009.03.25 午後 12:13 [Perl] | |

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/44461661

この記事へのトラックバック一覧です: definedで調べなくてもmy $fhでOK:

コメント

コメントを書く