I have several suggestions.

You should probably change 'f' to 'x' in your usage and in your call to getopts. It looks like you have a bug.

You should probably get rid of the @ARGV check because I doubt it does what you think it does. If you pass these 2 options on your command line, '-c foo -x bar', scalar @ARGV will resolve to 4, not 2, as you might expect. Instead, consider checking the return status of the getopts.

I make it a habit to check if an option is defined, just in case '0' is a legal value:

if (defined $options{o})

Consider using the Core module Pod::Usage instead of rolling your own usage handler. I second the recommendation to switch to Getopt::Long.

In reply to Re^3: question about getopt by toolic
in thread question about getopt by Sun751

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":