【问题标题】:Perl Difference between <FH> and <$FH> [duplicate]<FH> 和 <$FH> 之间的 Perl 区别 [重复]
【发布时间】:2015-12-02 11:30:16
【问题描述】:

我对 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;

我是“在罗马时”的忠实粉丝,我努力以正确的方式做事。在那张纸条上,我的第一种方法是错误的吗?它是否有我不知道的影响或风险?

方法 #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 的繁重日子里,我很可能仍然处于众所周知的困境中,所以如果这是十年前的惯例,请原谅我的无知。

【问题讨论】:

    标签: perl


    【解决方案1】:

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

    my 创建词法范围的变量。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2012-02-13
      • 1970-01-01
      • 2011-08-01
      • 2013-11-08
      相关资源
      最近更新 更多