Я хотел бы использовать переменные $a
и $b
в моих анонимных двоичных функциях, как это делается в sort {$a <=> $b} (1, 2, 3)
, но я не могу понять, почему код, например
#!/usr/bin/env perl
use strict;
use warnings;
Foo::Bar(sub { $a + $b });
package Foo;
sub Bar {
my ($function) = @_;
for my $i (1, 2, 3) {
local ($a, $b) = ($i, $i);
print $function->() . "\n";
}
}
не работает. Пока
#!/usr/bin/env perl
use strict;
use warnings;
Foo::Bar(sub { $_ });
package Foo;
sub Bar {
my ($function) = @_;
for my $i (1, 2, 3) {
local $_ = $i;
print $function->() . "\n";
}
}
отлично работает.
Что я делаю неправильно?