An alternate to using a standard options module like Getopt::Long is to read in your arguments from a configuration file using something like Config::General.
Chiming in because this is pet peeve. I dislike Config::General and still resent that it became the default for Catalyst. I would much rather see config with YAML or JSON or a plain .ini this = that style file or even a require "some-config.pl";. Config::General is the XML::Simple of configuration modules but moreso.