in reply to Read two values from input

Depends upon what you want in terms of data validation. Your example shows two integer numbers, so that is what this does. Oh, BTW do not use $a or $b as variables in a Perl program as they have special meanings in sort().

I think this would have worked out better if I had only used regex, but my brain was on this "split" subject. But in any event, this shows how to detect too many arguments on the input line, what I just called "kruft".

#!/usr/bin/perl -w use strict; my $line; my ($x,$y); my $two_nums_valid =0; while ( (!$two_nums_valid) and (print "enter 2 integer numbers: ") and ($line =<STDIN>) ) { next if $line =~ /^\s*$/; # just re-prompt on blank lines chomp $line; #needed here to detect real $kruft ($x, $y, my $kruft) = split (' ', $line); if (defined $kruft) { print "illegal format - only two integer numbers allowed!\n"; next; } if (!defined $y or $x !~ /^\d+$/ or $y !~ /^\d+$/) { print "two integer numbers are needed, like: 10 20\n"; next; } $two_nums_valid =1; } print "hooray the numbers are: $x and $y\n"; __END__ C:\TEMP>perl inputXY.pl enter 2 integer numbers: a b two integer numbers are needed, like: 10 20 enter 2 integer numbers: a b 10 illegal format - only two integer numbers allowed! enter 2 integer numbers: a 10 two integer numbers are needed, like: 10 20 enter 2 integer numbers: 10 a 20 illegal format - only two integer numbers allowed! enter 2 integer numbers: 2 2.5 two integer numbers are needed, like: 10 20 enter 2 integer numbers: 20 two integer numbers are needed, like: 10 20 enter 2 integer numbers: 20 b two integer numbers are needed, like: 10 20 enter 2 integer numbers: 30 44 hooray the numbers are: 30 and 44