As you haven't told us what problems you're trying to address it's hard to give you a good direction to investigate in.

There is an experimental feature named lexical_subs that is supposed to declare lexically scoped subroutine names in the following form:

use feature 'lexical_subs'; sub foo { my sub secret_foo { my($arg) = @_; return "Hello $arg"; }; my( $bar ) = @_; my $res = secret_foo( $bar ); return "Result is '$res'"; } print foo('World');

But as far as I know, the feature never left its experimental status and has the same interactions with lexical variables as the traditional approach using lexical variables has. If you want to use local subroutines without polluting the namespace, just use anonymous subroutines:

use feature 'lexical_subs'; sub foo { my $secret_foo = sub { my($arg) = @_; return "Hello $arg"; }; my( $bar ) = @_; my $res = $secret_foo->( $bar ); return "Result is '$res'"; } print foo('World');

Using dynamic scope is usually fraught with problems as debugging dynamic scope is difficult. There is a reason why lexical scope was a great thing for Perl 5, and while it is sad that there is no convenient lexical scope for subroutines, working around this with dynamic scope is a bad idea.


In reply to Re: how to declare a local *subname=sub{}? by Corion
in thread how to declare a local *subname=sub{}? by perl-diddler

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.