我有一个Perl脚本,它接受命令行参数和STDIN
#!/usr/bin/perl -w
use strict;
use warnings;
my $logpath = $ARGV[0];
print "logpath : $logpath\n";
print "Name : ";
my $name = <>;
chomp($name);
print "my name is $name\n";
它不会在stdin输入处停止。 适用于任何一个命令行或标准输入,但不适用于两者。
有什么原因吗?
答案 0 :(得分:19)
更改
my $name = <>;
到
my $name = <STDIN>;
如果@ARGV
没有元素,那么菱形运算符将从STDIN
读取,但在您的情况下,因为您通过命令行传递参数,@ARGV
将不为空。因此,当您使用菱形运算符<>
来读取名称时,将读取名称在命令行中指定的文件的第一行。