nav*_*gde 11 perl stdin argv command-line-arguments
我有一个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";
Run Code Online (Sandbox Code Playgroud)
它不会在stdin输入处停止.适用于任何一个命令行或标准输入,但不适用于两者.
任何原因?
cod*_*ict 19
更改
my $name = <>;
Run Code Online (Sandbox Code Playgroud)
至
my $name = <STDIN>;
Run Code Online (Sandbox Code Playgroud)
如果@ARGV没有元素,那么菱形运算符将读取STDIN但在您的情况下,因为您通过命令行传递参数,@ARGV将不会为空.因此,当您使用菱形运算符<>来读取名称时,将读取名称在命令行中指定的文件的第一行.