in reply to Deleting a file after it runs?

I think, since you're opening the file for write, that trying to read it in isn't really going to work. If you run it with warnings, as a standalone file, you're more liable to see that this:
#!/usr/bin/perl -w open(INIT, ">doit"); while (<INIT>) { printf "%s\n", $_; } close INIT;
when run gives:
    Filehandle INIT opened only for output at init.cgi line 3.

How about this for an even shorter solution? -- since Perl reads the entire file into memory before compilation, by runtime, the file is no longer necessary.  Hence, you can do it like this:

#!/usr/bin/perl -w unlink $0; # Delete myself! print "Still here!\n"; # Prove that script executes okay # Rest of code follows ...
Now:
    % init.cgi
    Still here!
    % ls init.cgi
    ls: init.cgi: No such file or directory