package ShownameFilter;
use Filter::Simple;
FILTER_ONLY code => sub {
s{
showname\(
( # Capture 2 (closes second)
\s*
\\? # References
[\$@%*]+ # Scalar, array, hash, glob
( # Capture 1 (closes first)
\w* # alphanumeric. Doesn't catch a lot of perl special vars
) # End capture 1
\s*
) # End capture 2
\)
}
{showname('$2',$1)}xg;
};
1;
####
use strict;
use warnings;
use ShownameFilter;
sub showname {
my ($name,$value) = @_;
print "name: $name\n";
}
my ($x, $x12, @foo, %bar);
showname($x);
showname( $x12 );
showname( \$x12 );
showname( @foo );
####
name: x
name: x12
name: x12
name: foo