Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Perl: last evaluated value as a returned value for a subroutine. See inside

by blue_cowdawg (Monsignor)
on Feb 21, 2013 at 17:15 UTC ( #1019986=note: print w/ replies, xml ) Need Help??


in reply to Perl: last evaluated value as a returned value for a subroutine. See inside

I modified your code a bit so you can see what's happening:

use strict; my $R; my $i=1; sub mySub { printf "\n\n%d. R = \"%s\"\n",$i++,$R; unless ($R) { print "CONDITION WORKS\n"; $R = 'some string'; } } print mySub(); #prints CONDITION WORKS\nsome string print mySub(); #prints some string print mySub(); #again
This ends up producing this for an output:
1. R = "" CONDITION WORKS some string 2. R = "some string" some string 3. R = "some string" some string
On the first iteration $R is undefined and there for in a "false" state. Therefore your print inside the "unless" gets executed and an assignment gets performed on $R. Where it gets trickier is the next iterations. Since you have unless($R) as the last evalutation the value of $R becomes the return value for the sub since you didn't specify one. see sub and search for "return" if you want more on this.


Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg


Comment on Re: Perl: last evaluated value as a returned value for a subroutine. See inside
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2015-07-31 06:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls