我对Perl并不陌生,但实际上我离开了好几年。
我的回归,'潜伏在这个网站和其他人,我无法帮助,但注意到我曾经这样做过:
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的繁重日子里,我仍然处于一个众所周知的摇滚之中,所以如果这是一个十年前的惯例,请原谅我的无知。
答案 0 :(得分:2)
IN
是指*IN
,它引用当前包中的符号IN
。这是全球性的。
my
创建词法范围的变量。
将变量的范围限制在所需的范围内是CS的一个基本方面。
它还允许use strict;
查找拼写错误。