Perl:在docs中内联选择FD并不适用于严格的引用

Maz*_*zze 4 perl

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

sha*_*rey 8

试试这个:

print { $OK ? *STDOUT : *STDERR } "stuff\n";
Run Code Online (Sandbox Code Playgroud)

星号表示typeglob.由于没有用于表示文件句柄的符号,因此您必须使用typeglob sigil(星号).


dgw*_*dgw 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" ;
Run Code Online (Sandbox Code Playgroud)