加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 这些“开放”格式之间有什么区别

发布时间:2020-12-15 21:58:11 所属栏目:大数据 来源:网络整理
导读:我使用这种语法来打开我的文件,因为几年前我在训练中学到了这些,而且我也用同样的方式做了书. open( INPUTFILE," $input_file" ) || die "Can't open $input_file: $!"; 前几天我在SO中回答了这个表格: open( $input_file,"",$input_file ) || die "Can't o
我使用这种语法来打开我的文件,因为几年前我在训练中学到了这些,而且我也用同样的方式做了书.
open( INPUTFILE,"< $input_file" ) || die "Can't open $input_file: $!";

前几天我在SO中回答了这个表格:

open( $input_file,"<",$input_file ) || die "Can't open $input_file: $!";

这种格式是新的还是只是以不同的方式,使用普通变量作为文件句柄?

我应该改为“新”格式吗?它有一些优点,还是“旧”格式有一些缺点?

解决方法

您应该使用三参数版本,因为它可以防止具有疯狂名称的文件.考虑以下:
my $file = "<file.txt";
open( INPUTFILE,"< $file" ) or die "$!";

这将插入为:

open( INPUTFILE,"< <file.txt" ) or die "$!";

…这意味着您实际上将打开一个名为file.txt的文件,而不是名为< file.txt的文件. 现在,对于文件句柄,您想要使用词法文件句柄:

open( my $fh,$file.txt ) or die "$!";

原因是当$fh超出范围时,文件关闭.此外,另一种类型的文件句柄(我不记得它的名称)具有全局范围.程序员并不是那么富有想象力,因此你可能会将文件句柄命名为INPUTFILE或FH或FILEHANDLE.如果其他人在你使用的模块中做了相同的命名,他们的文件句柄INPUTFILE会发生什么?好吧,它们都是有效的,而另一个则是有效的.哪一个clobbers?谁知道.这取决于它们何时打开.结束?如果另一个程序员打开了INPUTFILE但实际打开它进行写入会发生什么?世界末日,我的朋友,世界末日.

如果你使用词法文件句柄($fh),你不必担心世界结束,因为即使其他程序员确实称它为$fh,变量范围也可以保护你免受破坏.

所以是的,总是使用带有词法文件句柄的open()的三参数形式.拯救世界.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读