我正在调试其他人的Perl脚本,并找到了一个以与此类似的方式写入文件的部分:
open(0,">/file.txt");
print 0 "Hello world.";
close(0);
我不明白为什么他们使用0
代替文件句柄名称的变量。这样做有什么好处吗?
答案 0 :(得分:5)
open
的第一个参数可以是各种各样的东西:
open(FH, ...)
open("FH", ...)
open(*FH, ...)
open(\*FH, ...)
open(my $fh, ...)
数字将被字符串化并视为变量名称。甚至可以使用Perl通常不允许的名称(例如123.456
)。
你真的应该避免这种奇怪的文件句柄名称。实际上,您应该将scalars变量用于文件句柄,最好是词法范围的变量。
open(my $fh, ...);
print $fh ...;