http://www.perlmonks.org?node_id=526658


in reply to Interesting line which I read from Monk's snippets

First, start with substr($0, 0, 1) ... perlvar tells us that $0 is the name of the program running .. perlfunc tells us about substr, and so this clause is getting the first letter of the program being run.

Now, let's look at {qw(a - b = c ~ d ^)} .. This is creating a hashref, with a, b, c, d as the keys and the characters: - = ~ ^ as the values.. to see this, do:
perl -MData::Dumper -e 'print Dumper {qw(a - b = c ~ d ^)}' # OUTPUT: $VAR1 = { 'a' => '-', 'b' => '=', 'c' => '~', 'd' => '^' };

And putting those together, you end up w/$pat being one of those four values characters if the first letter of $0 is a, b, c, or d. Otherwise it will be undef.

why is this being done? I dunno -- would have to see the context.