in reply to Subroutine Loop

"The most effective debugging tool is still careful thought, coupled with judiciously placed print statements."
Brian Kernighan, "Unix for Beginners" (1979)

Still true in 2015.

sub tryagain5 { my ($messagetouser) = @_; my $ans = callandresponse($messagetouser); my $count=1; # DEBUG print "ans is <<$ans>>\n"; print "count is <<$count>>\n"; while ($count < 5 and $ans =~ /^\s*\n/) { $count++; $ans = callandresponse ($messagetouser); } if ($ans =~ /^\s*\n/) { return 0; } else { return $ans; } }

You should learn how to indent your programs properly: use perltidy. Bad indentation (like yours) is a serious hindrance to careful thought.