use strict; BEGIN { my $old = select STDERR; $|++; # turn on autoflush select $old; $|++; # turn on autoflush $0 = shift(@ARGV); # rename the script my $rv = do($0); # execute the file die $@ if $@; # die on parse/execute error } ### XXX 'do' returns last statement evaluated, which may be ### undef as well. So don't die in that case. #die $! if not defined $rv; # die on execute error