Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Local for lexicals

by LanX (Canon)
on Aug 13, 2009 at 10:52 UTC ( #788212=note: print w/ replies, xml ) Need Help??


in reply to Re: Local for lexicals
in thread Local for lexicals

like all other "localizing" approaches the user is forced to do either my $x or our $x in the scope surrounding the lamda to use your solutions under use strict!

Cheers Rolf


Comment on Re^2: Local for lexicals
Select or Download Code
Re^3: Local for lexicals
by Roy Johnson (Monsignor) on Aug 13, 2009 at 14:10 UTC
    Well, you could declare $x within the call to lambda, instead of surrounding it:
    #!perl use strict; use warnings; sub lambda { my $fn = pop; my @foo = @_; # foo references $x, etc. sub { # Put values into referenced params ${$foo[$_]} = $_[$_] for 0..$#_; &$fn; } } my $x = 3; my $closure = lambda do { my ($x, $y); \($x, $y) => sub { print "Got $x and $y\n" } } ; $closure->($_, $_+1) for (1..4); print "And my X is $x\n";
    Though I suspect that's a distinction that won't be seen as advantageous. It's just as easy to write
    my $closure = sub { my ($x, $y) = @_; print "Got $x and $y\n"; };
    which is the Perlish way to do what the OP wants to do.

    Caution: Contents may have been coded under pressure.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2014-09-23 04:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (210 votes), past polls