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

Nik*_*hra 3 perl

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

输入

4 3
3 1
5 7
Run Code Online (Sandbox Code Playgroud)

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

a,b=gets.split.map &:to_i
Run Code Online (Sandbox Code Playgroud)

zdi*_*dim 7

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

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

    # Do what you need with $first and $second
}
Run Code Online (Sandbox Code Playgroud)

这使用的默认分割,分割默认变量$_由(向其输入被分配)' ',它代表任何空间的任何量.所以split;上面是一样的split ' ', $_;.每个输入行末尾的换行符都被删除.

对于读取输入和菱形运算符, <>请参阅perlop中的I/O运算符,对于默认输入和模式搜索空间变量,$_请参阅perlvar中的常规变量.

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

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

use warnings 'all';
use strict;
Run Code Online (Sandbox Code Playgroud)