在the perldoc for print
中,它说这应该有效:
print { $OK ? STDOUT : STDERR } "stuff\n";
但它与use strict
没有关系,当我然后使用像
print { $OK ? "STDOUT" : "STDERR" } "stuff\n";
我得到了
Can't use string ("STDOUT") as a symbol ref while "strict refs" in use ...
如何在不取消使用use strict
的情况下使此结构正常工作?
谢谢,
Mazze
答案 0 :(得分:8)
试试这个:
print { $OK ? *STDOUT : *STDERR } "stuff\n";
星号表示typeglob。由于没有用于表示文件句柄的符号,因此您必须使用typeglob sigil(星号)。
答案 1 :(得分:5)
要防止出现错误消息Bareword "STDOUT" not allowed while "strict subs" in use at ...
,您必须使用typeglob:
#!/usr/bin/perl
use strict ;
use warnings ;
my $OK = 1 ;
printf { $OK ? *STDOUT : *STDERR } "stuff\n" ;