in reply to Run as copy or read/write self

Why these are the very principles which powers TheDamian's minion selfGOL (well those and pure unrelenting evil ;) If you've got your permissions setup correctly then to change your script within the script can just be a simple combination of open and exec e.g
print "am in $0\n"; { local $/; seek DATA, 0, 0; (my $data = <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__

HTH

_________
broquaint