在Perl中,如何从STDIN中读取空格分隔数对?

时间:2016-11-19 21:50:16

标签: perl

我想在Perl程序中每行输入2个输入。

输入

4 3
3 1
5 7

我们可以通过这个声明在Ruby中做到这一点

a,b=gets.split.map &:to_i

1 个答案:

答案 0 :(得分:6)

如果这来自STDIN,您需要逐行阅读,split每行按空格

while (<STDIN>) 
{
    my ($first, $second) = split;

    # Do what you need with $first and $second
}

这使用默认值split来分割默认变量$_(分配给哪个输入)' ',代表任意数量的空间。因此上面split;split ' ', $_;相同。每个输入行末尾的换行符都将被删除。

要阅读输入和菱形运算符 <>,请参阅I/O Operators in perlop,以及默认输入和模式搜索空间变量{{ 1}}见General Variables in perlvar

检查用户输入是另一回事。要检查这些确实是数字,例如,核心模块Scalar::Util中的一个好工具是$_

我不知道你的节目中还有什么,但我建议总是从

开始
looks_like_number