Ваши аргументы будут разделены пробелами, поэтому да, fub1,fub2,fub3
будет одним аргументом. Просто используйте вместо этого пробел, и все будет в порядке. E.g.:
flow.pl fub1 fub2 fub3 path1 path2
my $fub1 = shift; # first argument is removed from ARGV and assigned to $fub1
Или
my $fub1 = $ARGV[0]; # simple assignment
Все сразу
my ($fub1,$fub2,$fub3,$path1,$path2) = @ARGV; # all are assigned at once
Обратите внимание, что использование shift
удаляет аргументы из @ARGV
.
Если у вас есть список аргументов, которые могут отличаться, это просто исправить, чтобы поставить их последними, а затем сделать:
flow.pl path1 path2 fub1 fub2 fub3 ... fubn
my $path1 = shift;
my $path2 = shift; # remove first two arguments, then
my @fubs = @ARGV; # assign the rest of the args to an array
Для более сложной обработки аргументов используйте модуль, такой как Getopt :: Long .