Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: parm#4 from caller == !"eval" ?

by choroba (Bishop)
on Sep 12, 2017 at 22:50 UTC ( #1199240=note: print w/replies, xml ) Need Help??


in reply to Re: parm#4 from caller == !"eval" ?

The documentation says:

$hasargs is true if a new instance of @_ was set up for the frame.

And that's how it works:

sub x1 { @_ = 'a'; &x2 } sub x2 { my ($c) = @_; say $c, (caller 0)[4] } x2('b'); # b1 x1(); # a

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^3: parm#4 from caller == !"eval" ?
by LanX (Bishop) on Sep 12, 2017 at 23:13 UTC
    Addendum to explain what the &x2 call does

    > Subroutines may be called recursively. If a subroutine is called using the & form, the argument list is optional, and if omitted, no @_ array is set up for the subroutine: the @_ array at the time of the call is visible to subroutine instead. This is an efficiency mechanism that new users may wish to avoid.

    Source perlsub

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

      To you and choroba, thanks for the example(s). I completely forgot about the '&' case.

      Thanks!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1199240]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2017-10-20 09:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My fridge is mostly full of:

















    Results (260 votes). Check out past polls.

    Notices?