in reply to Subroutine Loop


Problem seems to be with your regex in the loop: you only continue if the answer matches 0 or more whitespaces! also since you chomp your input it wont match the newline character. here is a fix

#!/usr/bin/perl use autodie; use strict; use warnings; my $messagetouser= "What is your favorite Color?"; my $ans = tryagain5 ( $messagetouser ); if ($ans) { print "$ans\n"; } else { print "You didn't reply! Goodbye.\n"; exit; } #print $answer, "\n"; sub callandresponse{ my ($messagetouser)=@_; print $messagetouser,"\n"; while(<STDIN>){ chomp $_; return $_; } } sub tryagain5 { my($messagetouser)=@_; my $ans = callandresponse ($messagetouser); my $count=1; while ($count < 5 && !($ans=~ /\A\s*\z/)) { $count++; $ans = callandresponse ($messagetouser); } if ($ans =~ /^\s*\n/) { return 0; } else { return $ans;} }
Also, believe me using strict and warnings will save you a world of hurt!