use absolutify; use English qw( -no_match_vars ); use Readonly qw( Readonly ); Readonly my $FOO => 12345; print "foo: $FOO\nprogram: $PROGRAM_NAME\n"; #### use absolutify; use English (); use Readonly (); Readonly::Readonly my $FOO => 12345; print "foo: $FOO\nprogram: $English::PROGRAM_NAME\n"; #### package absolutify; use Filter::Simple; { my $USE_REGEX = qr{ ^ \s* ( use \s+ (\S+) \s+ ) qw[(] ([^\)]*) [)] ; }xms; my %Filter_Replace; FILTER { while ( s/ $USE_REGEX /$1();/xms ) { my ( $use_line, $package, $import ) = ( $1, $2, $3 ); my @imports = split /\s+/, $import; for my $import (@imports) { if ( $import =~ / \A ([&\$%@])? (\w+) \z /xms ) { $Filter_Replace{$import} = "$1$package\::$2"; } } } s/ ( [&\$%@]? \w+ ) / $Filter_Replace{$1} || $1 /xmsge; }; } 1;