Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Can I break out of a subroutine before the end?

by AcidHawk (Vicar)
on Apr 30, 2003 at 08:20 UTC ( #254204=note: print w/ replies, xml ) Need Help??


in reply to Can I break out of a subroutine before the end?

To simplify the given example and keep to the "one entry point one exit point to and from a subroutine" style, I would only add an else to the subroutines if statement Check the following:

#!/usr/bin/perl -w use strict; sub test { my ($param) = @_; if ($param =~ /e/) { print "e found.\n"; } else { print "No e found.\n"; } }; &test( "test" ); &test( "toast" );
I have also tried the following in case there are more than two options ie (more than true or false). I have only one entry point in a subroutine and one exit from that routine. It does mean though that I have to test the return value of the subroutine. Using the same example as above I could expand the tests (if statements) and the value that is returned, and then test these values later. E.g.
#!/usr/bin/perl -w use strict; sub test { my ($param) = @_; my $rc = 0; if ($param =~ /e/) { $rc = 1; } elsif ($param =~ /a/) { $rc = 2; } return($rc); }; my @tsts = qw/ test toast kitty /; foreach my $word (@tsts) { my $ret_val = &test($word); if ($ret_val == 1) { print "E found\n"; } elsif ($ret_val == 2) { print "A found\n"; } else { print "A or E NOT found\n"; } }


Comment on Re: Can I break out of a subroutine before the end?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://254204]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (10)
As of 2014-09-17 19:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (97 votes), past polls