$ cat test-gol.pl #!/usr/bin/perl use Getopt::Long qw/:config pass_through/; my ($array, @array); # option names are: [sa][nw] s=scalar, a=array n=no '@', w=with '@' GetOptions( 'sn=s' => \$array ) or die 'options'; print "Scalar @$array\n"; undef $array; GetOptions( 'sw=s@' => \$array ) or die 'options'; print "Scalar @$array\n"; GetOptions( 'an=s' => \@array ) or die 'options'; print "Array @array\n"; @array = (); GetOptions( 'aw=s@' => \@array ) or die 'options'; print "Array @array\n"; $ perl test-gol.pl --sn one --sn two --sw one --sw two --an one --an two --aw one --aw two Scalar Scalar one two Array one two Array one two