我有一个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输入停止.
对于任何一个命令行或标准输入都可以正常工作,但不适用于这两者.
任何原因?
更改
my $name = <>;
至
my $name = <STDIN>;
如果@ARGV没有元素,那么钻石操作符将从STDIN读取,但是在您的情况下,由于您通过命令行传递参数,@ARGV不会为空.所以当你使用钻石运算符<>要读取名称,将从命令行中指定名称的文件的第一行读取.