perl Script Parameter
Sebastian | 2. Juli 2007 | 20:25Mit der folgenden kleinen Funktion können Kommandozeilenargumente in einen Hash umgewandelt werden. Es gilt: Argumente, die durch ein “-” eingeleitet werden dürfen nur aus einem Zeichen bestehen, Parameter die mit “- -” beginnen können aus mehreren Zeichen bestehen. Jeder Parameter kann mit “=<wert>” erweitert werden. Der Hash, der zurückgegeben wird enthält als Schlüssel alle Argumente und als Wert den dazugehörigen Wert bzw. “true“, wenn kein Wert angehängt wurde.
sub getArgv { my %return; foreach (@_) { s/^(-(\\w{1})=?(.*))|(--(\\w*)=?(.*))$/$2$5/; $return{$2.$5} = ($3 || $6) ? $3 . $6 : true if ($2 || $5); } return %return; } |
Verbesserungsvorschläge bitte als Kommentar.







Es geht einfacher mit Getopt::Std and Getopt::Long.
zB
#!/usr/bin/perl
use Getopt::Long;
my ($help, @url, $size);
#-- prints usage if no command line parameters are passed or there is an unknown
# parameter or help option is passed
usage() if ( ! GetOptions('help|?' => \$help, 'url=s' => \@url, 'size=i' => \$size)
or @ARGV < 1 or defined $help );
sub usage
{
print "Unknown option: @_\n" if ( @_ );
print "usage: program [--url URL] [--size SIZE] [--help|-?]\n";
exit;
}