从同一行执行输入

时间:2013-10-15 16:30:35

标签: perl input execution

所以我试图像这样得到用户的输入:user@server:~sample.pl input所以我用过我确实有这个代码

$input = <>;
chomp ($input);
print "$input";

但它没有达到我想要它的目的,因为用户将键入执行行user@server:~sample.pl然后按Enter键,然后输入,但我不希望用户按Enter键。

我也试过

$input = `<>`;
chomp ($input);
print "$input";

但它崩溃了。

希望我的问题清楚。

谢谢!

3 个答案:

答案 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;

进行快速检查以查看是否输入了最后一个参数(绝对没有验证,但这是另一个主题)。