#!/usr/bin/perl package attribute; use Filter::Simple sub { s/(\$|\@|\%)(\.)(\w+)/selfify($1,$2,$3)/xeg; }; sub selfify { ($sigil,$twigil,$identifier)=@_; return "\$self->{$identifier}" if ($sigil eq '$'); return "$sigil\{\$self\-\>\{$identifier\}\}" if $sigil eq '%' or $sigil eq '@'; } 1; #!/usr/bin/perl use attribute; $self={ scalar => "SCALAR", array => ["ARRAY",], hash => {"HASH",}, }; print '$.scalar: ',$.scalar,"\n"; print '@.array: ',@.array,"\n"; print '%.hash: ',%.hash,"\n";