in reply to TIMTOWTDI but how do you use Perl to create CLI scripts?

Many questions in one! I'll try to answer some of them.

My ~/bin is full of scripts, Perl, bash, or whatever else I found suitable for a task at the time. For small Perl scripts, I often don't declare any package; but often (especially when using an OO abstraction) I just put one or more

{ package My::Frobnicator; ... }
into the script.

Modulinos were fun, but the right time to prefer them is never. If you need to reuse the code, just create a module. Even if no one else is going to use the module (how could you know?), creating a module is a good thing: it's much easier to test it and reuse it.

I'd love to give you some examples, but the public repository of my scripts doesn't contain much stuff I'm still as proud of as when I created it.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]