在perldoc中print,它说这应该工作:
print { $OK ? STDOUT : STDERR } "stuff\n";
Run Code Online (Sandbox Code Playgroud)
但它没有use strict,当我然后使用引号之类的
print { $OK ? "STDOUT" : "STDERR" } "stuff\n";
Run Code Online (Sandbox Code Playgroud)
我明白了
Can't use string ("STDOUT") as a symbol ref while "strict refs" in use ...
Run Code Online (Sandbox Code Playgroud)
如何在不废除的情况下使这个结构工作use strict?
谢谢,
Mazze
试试这个:
print { $OK ? *STDOUT : *STDERR } "stuff\n";
Run Code Online (Sandbox Code Playgroud)
星号表示typeglob.由于没有用于表示文件句柄的符号,因此您必须使用typeglob sigil(星号).
要防止出现错误消息,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" ;
Run Code Online (Sandbox Code Playgroud)