传递命令行参数以及来自STDIN的Perl脚本输入?

时间:2011-03-25 10:08:40

标签: perl stdin command-line-arguments argv

我有一个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输入处停止。 适用于任何一个命令行或标准输入,但不适用于两者。

有什么原因吗?

1 个答案:

答案 0 :(得分:19)

更改

my $name = <>;

my $name = <STDIN>;

如果@ARGV没有元素,那么菱形运算符将从STDIN读取,但在您的情况下,因为您通过命令行传递参数,@ARGV将不为空。因此,当您使用菱形运算符<>来读取名称时,将读取名称在命令行中指定的文件的第一行。