我有一个 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";
它不会在标准输入输入处停止。 适用于命令行或标准输入中的任何一种,但不适用于两者。
有什么理由吗?
最佳答案
改变
my $name = <>;
至
my $name = <STDIN>;
如果@ARGV
没有元素,那么菱形运算符将从 STDIN
读取但在您的情况下,由于您通过命令行传递参数, @ARGV
不会为空。因此,当您使用菱形运算符<>
时要读取名称,将读取在命令行中指定名称的文件的第一行。
关于perl - 为 Perl 脚本传递命令行参数以及来自 STDIN 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431023/