Perl在<fh>和&lt; $ FH&gt;

时间:2015-12-02 03:11:33

标签: perl

我对Perl并不陌生,但实际上我离开了好几年。

我的回归,&#39;潜伏在这个网站和其他人,我无法帮助,但注意到我曾经这样做过:

open IN, 'filename.txt' or die;
open OUT, '>filename.new' or die;
while (<IN>) {
  print OUT
}
close OUT;
close IN;

我现在看到标准方法现在就是这样做:

open my $IN, '<', 'filename.txt' or die;
open my $OUT, '>', 'filename.new' or die;

我是#34;在罗马时,#34;我努力以正确的方式做事。在那个问题上,我的第一个方法是错误的吗?它是否具有我不知道的含义或风险?

方法#1的一个缺点是,这将在Perl中编译(并且可能运行),即使打开了限制:

open IN, 'filename.txt' or die;
open OUT, '>filename.new' or die;
while (<NOT_EVEN_CLOSE>) {
  print OUT
}
close OUT;
close IN;

另一个可能的(?)原因是您可以将$IN作为参数传递?有点像静态类和单例之间的区别?我抓住了那根稻草。

最后,假设方法2更正确或更好,我应该返回并修改旧代码以应用此方法的更改吗?

此外,很可能在我做Perl的繁重日子里,我仍然处于一个众所周知的摇滚之中,所以如果这是一个十年前的惯例,请原谅我的无知。

1 个答案:

答案 0 :(得分:2)

IN是指*IN,它引用当前包中的符号IN。这是全球性的。

my创建词法范围的变量。

将变量的范围限制在所需的范围内是CS的一个基本方面。

它还允许use strict;查找拼写错误。