use 5.00503;
use strict;
use File::Find;
my $USEVARS_DONE = 0;
my @OUR_VARS = ();
sub mk5005 {
find(\&process_file, "lib", "t");
}
sub process_file {
my($file) = $_;
return unless -f $file;
$USEVARS_DONE = 0;
@OUR_VARS = ();
open FILE, "<$file" or die "Cannot open $file";
my $data = join '', <FILE>;
close FILE;
while($data =~ /^our[\s(]+([\$%@][\w_]+).*[;=]/mg) {
push @OUR_VARS, $1;
}
$data =~ s/^our[\s(]+[\$%@][\w_]+.*/rep_our($&)/meg;
$data =~ s/^use\s+5\.006/\nuse 5.00503/mg;
$data =~ s/^[ \t]*use warnings;//mg;
$data =~ s/^[ \t]*no warnings.*?;/\$\^W = undef;/mg;
$data =~ s/_INTERNAL_DEBUG/INTERNAL_DEBUG/g;
open FILE, ">$file" or die "Cannot open $file";
print FILE $data;
close FILE;
}
sub rep_our {
my($line) = @_;
my $out = "";
if(!$USEVARS_DONE) {
$out = "use vars qw(" . join(" ", @OUR_VARS) . "); ";
$USEVARS_DONE = 1;
}
if($line =~ /=/) {
$line =~ s/^our\s+//;
} else {
$line = "\n";
}
$out .= $line;
return $out;
}
1;