3 ms·
There is nothing to be afraid of here, sort just makes use of localised $a & $b package variable names as references to the sort block: our $a = 100; # u
by draegtun 14y ago
There is nothing to be afraid of here, sort just makes use of localised $a & $b package variable names as references to the sort block:
our $a = 100; # using $a package variable
# then later do a sort on @list
my @sorted = sort { $a cmp $b } @list;
# @sorted worked correctly, $a = 100 had no effect on it
# and $a is still 100
And if we change our to my (so lexical variable) then script will fail to compile giving the fatal error: Can't use "my $a" in sort comparison at...
For more information on sort see: http://perldoc.perl.org/functions/sort.html http://perldoc.perl.org/functions/sort.html
PS. The OP problem may have been due to issue/bug in older version of Perl. Also using use strict; use warnings do help highlight issues with code.
- bch 14y agoIndeed. First 3 lines of all perl code for me are: #!/usr/bin/env perl use strict; use warnings;