我想要一个我写的Perl脚本,如果它没有收到任何输入,就会显示帮助信息。
如何判断stdin上是否有任何内容?
答案 0 :(得分:8)
if (@ARGV == 0 && -t STDIN && -t STDERR) {
print STDERR "$0: WARNING: reading input from keyboard, type ^D for EOF, ^C to intr.\n";
}
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您正在讨论STDIN的输入,您可以检查变量是否等于空字符串(在删除CR / LF之后)。例如:
my $myInput = <STDIN>;
chomp($myInput);
if ($myInput eq "")
{
print "Error! You didn't submit any data!\n";
}
但是,作为@thnee says,如果要检查通过命令行传入的参数,则应使用$#ARGV。
例如:
if ($#ARGV == -1)
{
print "Error! No input arguments entered!\n";
exit(-1);
}
参考文献:
答案 3 :(得分:0)
您可能还会发现这个perldoc FAQ对于检查键盘是否有任何输入非常有用:
http://perldoc.perl.org/perlfaq8.html#How-do-I-check-whether-input-is-ready-on-the-keyboard%3f
答案 4 :(得分:0)
可以检查STDIN上是否有某些 进入(使用非阻塞读取,select
或ioctl FIONREAD
),但是无法检查是否有某些内容是进入stdin,因为它尚未发生。
除了不可能,你要求违反惯例。例如,取cat
,perl
,sort
等等。如果您没有提供任何参数,他们会很乐意等待STDIN,直到您提供他们需要的为止。
用户知道使用man tool
或tool --help
获取信息。