in reply to command line argument parsing (was: command line)

It's not, you're using some form of interpolating quotes, \ escapes certain characters, invalid escape sequences return the original character. The \ get wiped out in the output.

You probably want to look at using Getopt::Std or Getopt::Long

--
perl -pew "s/\b;([mnst])/'$1/g"