所以我试图像这样得到用户的输入:user@server:~sample.pl input
所以我用过我确实有这个代码
$input = <>;
chomp ($input);
print "$input";
但它没有达到我想要它的目的,因为用户将键入执行行user@server:~sample.pl
然后按Enter键,然后输入,但我不希望用户按Enter键。
我也试过
$input = `<>`;
chomp ($input);
print "$input";
但它崩溃了。
希望我的问题清楚。
谢谢!
答案 0 :(得分:4)
@ARGV
中提供了Perl脚本的参数。
>perl -E"say for @ARGV" a b c
a
b
c
答案 1 :(得分:1)
您希望只读取用户从脚本中提供的参数信息。 <>
运算符将尝试打开所提供的任何参数,并且还将从STDIN
读取,这是用户在执行脚本后能够输入信息的方式。
脚本的参数可以在变量@ARGV
中找到(字符串在空格上分割),因此您可以使用此参数将输入限制为在命令后输入的内容:
print join(" ", @ARGV),"\n";
此示例将回显用户提供的任何字符串。
答案 2 :(得分:1)
由于这是Perl,还有另一种方法: - )
my $input = shift @ARGV;
当然,只有你只有一个参数才有效。但是,在大约两三个参数之后,移除数据将变得乏味。
如果您的参数定义明确,您可以执行类似
的操作my($ name,$ zipCode)= @ ARGV;
或者,如果您想确保用户提供所有参数,您可以执行类似
的操作die“用法:sample.pl [name] [zip] \ n”除非$ zipCode;
进行快速检查以查看是否输入了最后一个参数(绝对没有验证,但这是另一个主题)。