11

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

任何原因?

4

1 回答 1

19

改变

my $name = <>;

my $name = <STDIN>;

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

于 2011-03-25T10:16:47.247 回答