This program throws error for redo how could i solve this
use strict;
use warnings;
use Switch::Plain;
my %data = (0 => "Enter the number",1 => "UPC",2 => "URL", 3 => "Elastic Search", 4 => "API", 5 => "MONGO", 6 => "TSV", 7 => "SQL", 8 => "JSON", 9 => "Enter the correct value");
my $input = "Enter the number:";
sub input(){
print "Choose You Input Method"."\n";
print "1.UPC"."\n";
print "2.URL"."\n";
print "3.Elastic Search"."\n";
print $input;
PROMPT: {
chomp(my $input = <>);
nswitch($input){
case 1 : {print "UPC"."\n"}
case 2 : {print "URL"."\n"}
case 3 : {print "Elastic Search"."\n"}
default: {"Enter the correct value"; redo PROMPT }
}
}
}
input();
my $pinput = "Enter the number:";
sub pinput(){
print "Choose Your Process Method"."\n";
print "1.API"."\n";
print "2.Mongo"."\n";
print $pinput;
$pinput = <>;
chomp($pinput);
nswitch($pinput){
case 1 : {print "API"."\n"}
case 2 : {print "MONGO"."\n"}
default : {print "Enter the correct value"."\n"}
}
}
pinput();
The error thrown is
Argument "" isn't numeric in numeric eq (==) at framework.pl line 21, <> line 1
The idea is to repeat the subroutine if there is any mismatch in used input for example if user types the empty value or 4?
Please help me to get solved?
You can convert input to number by adding 0
, or multiplying by 1
,
$pinput = <> *1;
or convert it after chomp
$pinput *= 1;