繁体   English   中英

有什么区别 <stdin> 和 <STDIN> ?

[英]What is the difference between <stdin> and <STDIN>?

当我在Perl模块( *.pm )文件中使用<stdin> ,它不是从键盘读取输入,但是当我在同一个地方使用<STDIN>时它工作正常。

当我使用<stdin>时为什么不输入?

STDIN是文档化的文件句柄。 还存在stdin ,它是STDIN别名,但它只能在main:: package中工作: main::stdinmain::STDIN相同(如perlop中所述 - Perl运算符和优先级 )。

因此,在一个包中,

package My::Package;
sub xx {
    print while <stdin>;
}

stdin被解释为My::Package::stdin ,它不存在。 你可以使用包中的main::stdin ,但是使用标准的STDIN (它总是指向main::STDIN ,甚至来自包)也更清晰。

不知道这一点,但发现它在perlop一个perlop段落中perlop

文件句柄STDINSTDOUTSTDERR是预定义的。 (文件句柄stdinstdoutstderr也可以在包中工作,它们将被解释为本地标识符而不是全局。)可以使用open()函数创建其他文件句柄。 有关详细信息,请参阅perlfunc中的perlopentut和“open”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM