Here is the initial code
use warnings;
use strict;
print "Welcome to Multiplication Challenge\n";
print "What would you like to do?\n";
print "1) FLASHCARD MODE\n";
print "2) TEST MODE\n";
print "3) OPTIONS\n";
print "4) Exit\n";
my $input = undef;
my $max = undef;
my $min = 10;
sub menu {
print "What would you like to do?\n";
print "1) FLASHCARD MODE\n";
print "2) TEST MODE\n";
print "3) OPTIONS\n";
print "4) Exit\n";
}
while ( $input = (<STDIN>) ) {
if ( $input =~ /1/ ) {
print "FLASHCARD MODE\n";
flashcard();
}
elsif ( $input =~ /2/ ) {
print "TEST MODE\n";
testmode();
}
elsif ( $input =~ /3/ ) {
print "3\n";
print "What is the maximum number?\n";
my $max = (<STDIN>);
&makeitbig($max);
&menu();
}
elsif ( $input =~ /4/ ) {
really();
}
}
sub really {
print "Are you sure?\n";
my $input = (<STDIN>);
if ( $input =~ /y/ ) {
exit;
}
else {
menu();
}
}
sub flashcard {
for ( 1 .. 10 ) {
my $random1 = int( rand(10) );
my $random2 = int( rand(10) );
print "$random1 * $random2\n";
my $total = ( $random1 * $random2 );
&validate($total);
}
}
my $count = 1;
sub validate {
my $newdata = shift;
TRYAGAIN:
my $input = (<STDIN>);
if ( $input == $newdata ) {
print "Correct!\n";
$count++;
if ( $count == 10 ) {
print "Congratulations\n";
print "You have finished FLASHCARD MODE;\n";
menu();
}
}
else {
print "$count: Try again\n";
goto TRYAGAIN;
}
}
sub testmode {
for ( 1 .. 25 ) {
my $random1 = int( rand(10) );
my $random2 = int( rand(10) );
print "Problem '#'$_\n";
print "$random1 * $random2\n";
my $total = ( $random1 * $random2 );
&validate_low($total);
}
}
my $meter = 1;
my @correct = ();
my $correctanswer = 1;
sub validate_low {
my $newdata = shift;
my $input = (<STDIN>);
$meter++;
if ( $input == $newdata ) {
print "Correct!\n";
push( @correct, $correctanswer );
}
else {
print "Sorry!\n";
}
if ( $meter == 25 ) {
&calculate();
}
}
my $sum = 0;
sub calculate {
foreach (@correct) {
$sum += $_;
return $sum;
}
my $prcnt = 4 * $sum;
print "You got $sum answers correctly out of 25. This is $prcnt%\n
+";
}
sub makeitbig {
my $other = shift;
if ( $other == $min ) {
return $min;
}
else {
return $other;
}
}