I'm trying to use one of the 'changes' you suggested during that talk, and its also one of the 'hints' you've provided in other talks, and probably your book... That of locking your source file, and using that as a semaphore to detect whether or not you are already running. open ME, "+<", $0 or die "..." flock ME, LOCK_EX | LOCK_BB or die ... This works great, if you invoke you app as: perl myapp.pl but if you've got a shebang line and chmod +x, and invoke it as such: ./myapp.pl then it doesn't even get as far as the open/flock because the OS (or bash) comes back with this instead: bash: ./myapp.pl: /usr/bin/perl: bad interpreter: Text file busy Obviously this isn't as clean and as friendly as you'd like. Any comments for a workaround? Other than to 'not use the shebang' method.