in reply to restart program on wrong user input.

You want a postcondition loop.
my $input; do { print "Please enter a number in the range 1 .. 10: "; chomp( $input = <STDIN> ); } until ( $input !~ /\D/ ) and ( $input >= 1 ) and ( $input <= 10 );
Perl treats the do {} while $cond construct specially — all other loops in Perl are precondition loops, that is, they check their condition before the body is executed. A do {} while $cond checks its condition after the body is executed. Hence the terms pre- and postcondition.

Makeshifts last the longest.