I still can't understand the use of having different names for the same script. Where are you keeping the default patterns?
The default patterns are hard coded into the script, namely:
The idea of scripts or binaries using the name they are called by as a parameter is not altogether uncommon in a Unix-like environment, a prominent example being your login shell that knows it is a login shell rather than an ordinary subshell from the fact that what appears to be its name starts with a dash.
In such an environment the Perl function exec lets you choose the name argument (which will end up as $0 in the called program) independently of the program's actual filename (using the indirect object syntax).
The easiest way to take advantage of a $0-aware script from the command line, however, is to make it accessible via appropriate different filenames.
Just link (or copy) your pul.pl file to aul.pl and see what happens if you call that (N.B. without a pattern argument).