Я пытаюсь передать массив Perl в командной строке.
Я читаю инструкции из https://perldoc.perl.org/Getopt/Long.html
мой сценарий
#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use feature 'say';
use autodie ':all';
use Getopt::Long 'GetOptions';
my @array;
GetOptions ("a=s@" => \@array);#'file' indicates string on command line, '=s' means it must be a string
if (defined $array[0]) {#http://perldoc.perl.org/Getopt/Long.html#Options-with-values
my @z = split(/,/,join(',',@array));
say 'The array is ' . join (', ', @z);
}
, которыйиспользуя командную строку выводит
con@VB:~/Scripts$ perl array_getopt.pl -a v c d
The array is v
, что неверно, так как оно пропускает c
и d
Я также пробовал GetOptions ("a=s" => \@array);
, который имеет ту же ошибку.
Я вижу на этой странице что-то, что мне придется повторять один и тот же тег снова и снова, как perl array_getopt.pl -a v -a c -a d
, что не понравится конечному пользователю.
Как я могу передать информациюкомандная строка, так что -a v c d
перейдет в массив?