Я никогда раньше не использовал атрибуты подпрограммы в perl, но бывает, что я нашел для них применение, поэтому я пытался понять, как я могу их использовать.В частности, мне нужно уметь во время выполнения выяснить, какие атрибуты имеет подпрограмма.У меня есть следующий тестовый код, но он выводит только пустой список:
use attributes;
sub MODIFY_CODE_ATTRIBUTES {
my ($class,$code,@attrs) = @_;
my $allowed = 'takeshash';
my @bad = grep { $_ ne $allowed } @attrs;
return @bad;
}
sub mylog : takeshash {
my $params = shift;
my $val = log($params->{'n'}) / log($params->{'base'});
return $val;
}
use Data::Dumper;
print Dumper [attributes::get(\&mylog)];
Запуск Perl v5.12.4, я получаю:
$ perl temp.pl
$VAR1 = [];