1package Descriptions; 2 3use Attribute::Handlers::Prospective; 4 5my %name; 6 7sub name { 8 return $name{$_[2]}||*{$_[1]}{NAME}; 9} 10 11sub UNIVERSAL::Name :ATTR(RAWDATA) { 12 $name{$_[2]} = $_[4]; 13} 14 15sub UNIVERSAL::Purpose :ATTR(RAWDATA) { 16 print STDERR "Purpose of ", &name, " is $_[4]\n"; 17} 18 19sub UNIVERSAL::Unit :ATTR(RAWDATA) { 20 print STDERR &name, " measured in $_[4]\n"; 21} 22 23 241; 25