Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Is it possible to create a sub exclusive to a sub? (Yes, and rare proper use of &$foo;)

by ihb (Deacon)
on Sep 19, 2004 at 02:05 UTC ( [id://392087]=note: print w/replies, xml ) Need Help??


in reply to Is it possible to create a sub exclusive to a sub?

You've been answered already that you should use an anonymous subroutine reference. I just want to tuck in that this is one of the very few cases where it's proper to exploit the behaviour of &$foo;.

Abstracting a block of code in a subroutine into another subroutine makes you not able to use @_ directly--or does it?

If you use the sigil & and no parenthesis in a subroutine call no new @_ will be created. The current @_ will be used. This is not the same as just passing @_ in the subroutine call. shift() and friends inside the called subroutine will effect the caller's @_ since they're the same. Thus, you get almost a macro-like solution.

This means that exploiting this behaviour is perfect for sub subroutine-level code refactoring.

You should never do &$foo; unless you know why and have a good reason. Here, you have a good reason and hopefully know why. :-)

ihb

Read argumentation in its context!

  • Comment on Re: Is it possible to create a sub exclusive to a sub? (Yes, and rare proper use of &$foo;)
  • Select or Download Code

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2024-04-25 23:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found