Beefy Boxes and Bandwidth Generously Provided by pair Networks kudra
more useful options
 
PerlMonks  

Re: Scoping issue when sorting with subroutines

by Fletch (Chancellor)
on Apr 12, 2002 at 15:16 UTC ( #158607=note: print w/ replies, xml ) Need Help??


in reply to Scoping issue when sorting with subroutines

Keep in mind that perl currently doesn't do nested subs (this is the souce of many a warning for those using Apache::Registry with mod_perl; see the mod_perl guide for a detailed explanation).

You could possibly return a list of coderefs that you create and use sort_em more as a sort routine factory.

sub sort_em { my $src = shift; return { up => sub { $src->{$a} <=> $src->{$b} }, down => sub { $src->{$b} <=> $src->{$a} }, } } my %numbers = ( qw( a 5 c 4 d 1 ) ); my $num_sorts = sort_em( \%numbers ); print "UP:\n", join( "\n", map { "$_ $numbers{$_}" } sort { $num_sorts->{up}->() } keys %numbers ), "\nDOWN\n", join( "\n", map { "$_ $numbers{$_}" } sort { $num_sorts->{down}->() } keys %numbers ), "\n";


Comment on Re: Scoping issue when sorting with subroutines
Select or Download Code
Re: Re: Scoping issue when sorting with subroutines
by broquaint (Abbot) on Apr 12, 2002 at 15:49 UTC
    > Keep in mind that perl currently doesn't do nested subs
    Ack, how un-DWIM!
    sub foo { my $x = "a var in foo()"; sub bar { print "\$x is - [$x]\n"; } } bar(); __output__ $x is - []
    But if we use a closure, all is well with the scope of $x
    sub foo { my $x = "a var in foo()"; return sub { print "\$x is - [$x]\n"; } } foo()->(); __output__ $x is - [a var in foo()]
    I was vaguely aware of the fact that nested subs in perl were broken (i.e scoped to current package, not current sub) and now I know the full extent (but I guess the logic should've followed really). Oh well, not much longer til Perl6 anyway ...
    HTH

    broquaint

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (16)
As of 2014-04-24 12:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (565 votes), past polls