in reply to Re^2: my $a outside sort block incompatibility
in thread my $a outside sort block incompatibility
Of course you need to use the appropriate package variables. That said, I recind my suggestion in favour of the OPs use of our.
Not because of any problem with the use of qualified package vars, but because against my expectations, it runs far more quickly. Indeed, unless someone can show me the flaw in my benchmark, I'll be explicitly including our( $a, $b) in all my sorts from now on:
#! perl -slw use strict; use Benchmark qw[ cmpthese ]; cmpthese -10, { "\$a<=>\$b" => q[my @a = sort{ $b <=> $a } 1 +.. 1e6;], "\$::a<=>\$::b" => q[my @a = sort{ $::b <=> $::a } 1 +.. 1e6;], "our(\$a,\$b)" => q[my @a = sort{ our( $a, $b ); $b <=> $a } 1 +.. 1e6;], }; __END__ C:\test>junk2.pl s/iter $::a<=>$::b $a<=>$b our($a,$b) $::a<=>$::b 2.09 -- -0% -77% $a<=>$b 2.08 0% -- -77% our($a,$b) 0.469 344% 343% --
UPDATE: I guess it really is time to upgrade. Under 5.10 I get much closer to what I expected:
Rate our($a,$b) $a<=>$b $::a<=>$::b our($a,$b) 1.75/s -- -46% -46% $a<=>$b 3.24/s 85% -- -0% $::a<=>$::b 3.24/s 86% 0% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: my $a outside sort block incompatibility
by tilly (Archbishop) on Feb 21, 2009 at 15:34 UTC | |
|
Re^4: my $a outside sort block incompatibility
by massa (Hermit) on Feb 21, 2009 at 17:28 UTC |