As a minor point: this
my $usage = "
Usage: $scriptname (-type<type> -OIMID <oimid> -version <version_numbe
+r> -out <filename> )
-type <type> :A|B
-version <version_number> :Required.Minimum Security Versio
-OEMID <oemid> : Required.
-out <filename> : Required.
could be a heredoc, which would make it easier to lay it out nicely:
my $usage = <<USAGE;
Usage: $0 -type[A|B] -OEMID id -version nnnn -out filename
version: minimum security version (integer)
OEMID: one of the OEM IDs fron (source here...)
out: name of any writable file
I altered the usage to conform to the more-often used standards from man pages, but you can use whatever makes sense to your users. The point is that it was easy for me to line things up because I'm writing it down exactly the way it will appear when it's printed.
You might also consider just printing to STDOUT instead of forcing an output file; that way your script could, for instance, pipe into grep or sort.