Perl的打印功能:打印到最后的文件句柄?

时间:2013-04-03 06:23:13

标签: perl

我对Perldoc的这一点感到困惑:

  

如果省略FILEHANDLE,则打印到最后选择的(参见select)输出句柄。   http://perldoc.perl.org/functions/print.html

似乎在写入文件句柄后,一个裸print语句将打印到该文件句柄。我写了一个脚本来测试这个......

#!/usr/bin/perl

open (FILE, '>', 'PrintTest.txt') or die $!;
print FILE "Hello world!\n";
print "Hello.... hello? hello world!\n"; 
close FILE;

但测试显示不然。

$ perl PrintTest.pl
Hello.... hello? hello world!

我们在这里写STDOUT,而不是FILE,这可能是最明智的结果,但似乎与上面引用的那条Perldoc相反。也许我误解了“最后选择的输出句柄”是什么意思?这是我能解释的唯一方法:-p

提前致谢~ktm

2 个答案:

答案 0 :(得分:4)

  

似乎说在写入文件句柄之后,裸体打印语句将打印到该文件句柄。

不,它表示会打印到最后选择的句柄,而不是您打印的最后一个句柄。它会指示您阅读this page以了解如何操作。

open (FILE, '>', 'PrintTest.txt') or die $!;
print FILE "Hello world!\n";
select(FILE);                              <----- Missing
print "Hello.... hello? hello world!\n"; 
close FILE;

答案 1 :(得分:1)

我认为需要SELECT语句才能将默认句柄从stdout更改为另一个。然后,所选的句柄保持使用状态,直到更改为止。