http://qs321.pair.com?node_id=621388


in reply to Modules as executable scripts?

I believe the canonical method is to use caller as friedo suggests, though I typically just do something like this (which, though I say "typically" isn't often :):

#!/usr/bin/perl package Foo; # ... unless (caller) { # ... execute this code if we're run stand-alone } else { # ... do whatever module initialization here. } __END__
You'll note that I didn't end my module with the traditional 1; because that's part of the module initialization. If the initialization succeeded it would return a true value. If you really didn't need to do any of that then leave off the else and just put a 1; after the conditional.