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;