print "am in $0\n"; { local $/; seek DATA, 0, 0; (my $data = ) =~ s/\bexec\b.*\n//; open(ME, ">$0") or die("ack - $!"); print ME qq[print "am in new \$0\\n";\n], $data; close ME; } exec "perl $0"; __DATA__