解决方法
STDIN是文档文件句柄。存在stdin也是STDIN别名,但它只适用于main :: package:main :: stdin与main :: STDIN相同(如
perlop – Perl operators and precedence所示)。
因此,在一个包装中,
package My::Package; sub xx { print while <stdin>; }
stdin被解释为My :: Package :: stdin,它不存在。您可以从包中使用main :: stdin,但是使用标准的STDIN(总是指向main :: STDIN,甚至是从一个包中)更清晰。