이전에는 perl에서 서브 루틴 속성을 사용한 적이 한번도 없었지만 사용법을 찾았습니다. 그래서 어떻게 사용할 수 있는지 이해하려고했습니다. 특히 런타임에서 서브 루틴의 속성을 알아낼 수 있어야합니다. 나는 다음과 같은 테스트 코드를 가지고 있지만, 그것은 단지 빈 목록을 출력합니다속성 :: 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)];
펄 v5.12.4 실행, 내가 얻을 : 문제가 섹션으로 설명처럼
$ perl temp.pl
$VAR1 = [];
감사합니다. RTFM에서 직접 알아낼 수 있었지만, 어떤 이유로 든 내 솔루션을 게시하기 위해 스택 오버플로를 할 수 없었습니다. –