in reply to Module/script all in one

You've got the right idea ... outside quotes, $* and $@ are the same, but within quotes, "$*" produces one argument, while "$@" produces $# arguments. (See my quick shell tutorial. However, you have an eval & an exec; the exec gets two arguments, but combines them into one while invoking Perl.

But who cares about shell? This is Perl!

In your module:

if ( $0 eq __FILE__ ) { # Code to run when the module IS the program }

--
TTTATCGGTCGTTATATAGATGTTTGCA