Есть мейн часть (программа-демон):
sub somefunction(\%); # обратите внимание на данное описание
my $coderef = \&somefunction;
eval "use MyModule"; # проверяем $@
eval {
MyModule::setupme($coderef);
};
# проверяем $@
Файл MyModule.pm:
package MyModule;
our $coderef;
sub setupme(\&) {
$coderef = shift;
return 1;
}
# эта функция вызывается самостоятельно в процессе работы, уже после setupme()
sub runMainFunction() {
my $data = { some => "thing" };
$coderef->(% {$data}); # см. ниже
}
Фишка в том, что вызов $coderef->(% {$data}) обрабатывается как будто в мейне у нас описана функция как sub somefunction(%), а не так как я задал, т.е как ссылка !
Это баг или фича?
P.S. linux x86_64, perl 5.14.2