Я никогда не использовал атрибуты подпрограмм в perl раньше, но бывает, что я нашел для них использование, поэтому я пытался понять, как я могу их использовать. В частности, мне нужно узнать во время выполнения, какие атрибуты имеет подпрограмма. У меня есть следующий тестовый код, но он выводит только пустой список:attributes :: get() возвращает пустой список?
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 = [];
Спасибо, я смог понять это сам RTFM, но по какой-то причине не смог получить переполнение стека, чтобы опубликовать мое решение. –