Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^3: Contents of @_ using subroutine signatures with default values (flag)

by dave_the_m (Monsignor)
on Jul 14, 2020 at 09:44 UTC ( #11119289=note: print w/replies, xml ) Need Help??


in reply to Re^2: Contents of @_ using subroutine signatures with default values (flag)
in thread Contents of @_ using subroutine signatures with default values

The simplified answer: no, it's not that simple. If @_ isn't populated, then the signature code gets its arguments directly from the stack. If @_ gets populated, then the stack and @_ can get out of sync, e.g. by code within the signature which manipulates @_. So in that case the code must get its args from @_ rather than from the stack. So there have to be two code paths for everything.

See this p5p post for more details.

Dave.

  • Comment on Re^3: Contents of @_ using subroutine signatures with default values (flag)

Replies are listed 'Best First'.
Re^4: Contents of @_ using subroutine signatures with default values (flag)
by LanX (Cardinal) on Jul 14, 2020 at 10:21 UTC
    > See this p5p post for more details.

    Thanks Dave, I will.

    ... this will be a longer read this evening. OO

    On a side note: I was fascinated to learn (rediscover ?), that a call &sub without arguments has full access to the callers @_.

    use strict; use warnings; use Data::Dump qw/pp dd/; sub foo { warn pp \@_; push @_,@_+1 } sub tst { &foo; &foo; &foo; warn pp \@_; } tst(1);

    -*- mode: compilation; default-directory: "d:/exp/" -*- Compilation started at Tue Jul 14 12:21:10 C:/Perl_524/bin\perl.exe -w d:/exp/access_@_.pl [1] at d:/exp/access_@_.pl line 7. [1, 2] at d:/exp/access_@_.pl line 7. [1, 2, 3] at d:/exp/access_@_.pl line 7. [1 .. 4] at d:/exp/access_@_.pl line 15. Compilation finished at Tue Jul 14 12:21:10

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2020-10-23 12:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (238 votes). Check out past polls.

    Notices?