Perl文件处理零而不是变量

时间:2015-08-07 14:03:09

标签: perl

我正在调试其他人的Perl脚本,并找到了一个以与此类似的方式写入文件的部分:

open(0,">/file.txt");
print 0 "Hello world.";
close(0);

我不明白为什么他们使用0代替文件句柄名称的变量。这样做有什么好处吗?

1 个答案:

答案 0 :(得分:5)

open的第一个参数可以是各种各样的东西:

  • 一句话:open(FH, ...)
  • 变量名称:open("FH", ...)
  • 一个glob:open(*FH, ...)
  • 对glob的引用:open(\*FH, ...)
  • 未定义的值:open(my $fh, ...)

数字将被字符串化并视为变量名称。甚至可以使用Perl通常不允许的名称(例如123.456)。

你真的应该避免这种奇怪的文件句柄名称。实际上,您应该将scalars变量用于文件句柄,最好是词法范围的变量。

open(my $fh, ...);
print $fh ...;