为什么使用自动生动的文件句柄打开三个参数的调用是Perl的最佳实践?

为什么使用自动生动的文件句柄打开三个参数的调用是Perl的最佳实践?

我有两个关于Perl的问题open职能:

我好像记得Perl最佳实践的3参数版本open比两个论证版本更好。

open(OUT, '>>', $file);

v.V.

open(OUT, ">>$file");

那是为什么?前几天,我试图告诉别人使用3参数版本,但似乎无法用任何东西来支持它。

2)我似乎还记得,自动激活的文件句柄比裸字文件句柄更受青睐(他们称之为不同的东西)。也不记得为什么。

open(my $out, '>>', $file);

v.V.

open(OUT, '>>', $file);

是一个strict事情?我好像记得我能用OUT带着strict但我不记得了。


料青山看我应如是
浏览 527回答 3
3回答

猛跑小猪

处理#2:OUT是一个全局文件句柄,使用它将您暴露在下面这样的潜在bug中:sub&nbsp;doSomething&nbsp;{ &nbsp;&nbsp;my&nbsp;($input)&nbsp;=&nbsp;@_; &nbsp;&nbsp;#&nbsp;let's&nbsp;compare&nbsp;$input&nbsp;to&nbsp;something&nbsp;we&nbsp;read&nbsp;from&nbsp;another&nbsp;file &nbsp;&nbsp;open(F,&nbsp;"<",&nbsp;$anotherFile); &nbsp;&nbsp;@F&nbsp;=&nbsp;<F>;&nbsp; &nbsp;&nbsp;close&nbsp;F; &nbsp;&nbsp;&do_some_comparison($input,&nbsp;@F);}open(F,&nbsp;"<",&nbsp;$myfile);while&nbsp;(<F>)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&doSomething($_);&nbsp;&nbsp;&nbsp;#&nbsp;do'h&nbsp;--&nbsp;just&nbsp;closed&nbsp;the&nbsp;F&nbsp;filehandle}close&nbsp;F;
打开App,查看更多内容
随时随地看视频慕课网APP