As a minor point: this
in reply to calling a subroutine from another subroutine
could be a heredoc, which would make it easier to lay it out nicely:
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.
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.
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
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.