Okay, I used a bad example to show my problem. I can see that the parser is just treating -a as string for -cell. Is there a way for GetOpts to not treat -a as string for -cell and treat it as an argument because of the dash?
Even so if you change lib=s to lib=f and then use the following command it still does not complain (and error out since lib should be a float):
testscript -lib string