scriptname.pl --dir="/dir1/sdir1" --dir="/dir2/sdir2" --file="thisfile.txt" #### my $params = &GetParameters(); my @dirs = @{ $params->{dir} }; my @file = @{ $params->{file} }; # and so on sub GetParameters { my @allowedParams = qw(file dir); die &PrintUsage() unless @ARGV; my $params = {}; # shell contain parameters foreach (@ARGV){ my ($key, $val) = split(/\=/, $_, 2); # split up by the first = # test if $key is a valid parameter unless ($key =~ s/^\-\-//) { # must start with -- die "Error: invalid param $key\n"; } unless ( grep {lc($key) eq lc($_)} @allowedParams){ die "Error: param $key not allowed\n"; } # maybe do some checks if $val is existing .... # add param to hashreference $params push (@{ $params->{$key} }, $val); } # for return ($params); } # GetParameters