有時候我不得不使用裸詞「STDOUT」,有時光劍不起作用,有時我可以使用裸詞或其他形式。是否有規則,告訴我什麼時候必須在表格上選擇,何時以及何時可以選擇表格?是否有規則告訴我必須選擇哪種形式的STDOUT/STDERR/SDTIN?
#!/usr/bin/env perl
use warnings;
use 5.12.0;
use utf8;
print STDOUT "Something\n"; # works
print \*STDOUT "Something\n"; # String found where operator expected
print { STDOUT } "Something\n"; # Bareword "STDOUT" not allowed while "strict subs" in use
print { \*STDOUT } "Something\n" # works
my $fh;
$fh = -t STDOUT ? STDOUT : STDERR; # Bareword "STDOUT"/"STDERR" not allowed while "strict subs" in use
$fh = -t STDOUT ? \*STDOUT : \*STDERR; # works
$fh = -t \*STDOUT ? \*STDOUT : \*STDERR; # works
怎麼樣'print {\ * STDOUT}「Something \ n」;'(作者說它有效)和你的第5條規則? – ArtM
非常正確。讓我檢查*爲什麼*有效。 –
perldoc.perl.org表示* FILEHANDLE可能是一個標量變量,它包含文件句柄的名稱或引用,因此引入了一個間接級別*,用於'print'。最後還描述了* block *的情況。 – ArtM