in reply to Options always prints 1

The script you posted is highly unlikely to print 1 (smm != msm != dmm). Beyond that, you might try reading the manual for Getopt::Long, where it describes how to declare options that take arguments.