Getopt::Long, but simpler and more powerful