#!/usr/bin/env perl $script = shift; $_ = `$^X -Mstrict -c $script 2>&1`; while (/^Global symbol "(.+?)"/gm) { $mys{$1} = 1; } $mys = join ',', keys %mys; $_ = `$^X -Mwarnings $script 2>&1`; while (/^Use of uninitialized value ([\$\%\@]\S+)/gm) { if (substr($1, 0, 1) eq '$') { $stuff .= "$1 = '';\n"; } else { $stuff .= "$1 = ();\n"; } } print "use strict;\nuse warnings;\n\nmy ($mys); $stuff\n"; system "cat $script";