Вы хотите использовать массив @_
напрямую. Вы не сможете назначить свои ссылки напрямую, как в вашем примере ч / б, как вы нашли, вы не знаете, сколько элементов было передано. Хорошо, что тебе тоже не нужно. Все аргументы передаются в подпрограммы Perl через специальный массив @_. Когда вы видите my $x = shift;
, в этом массиве данные перемещаются из ваших локальных переменных. Здесь, так как вы не можете знать заранее, сколько vars нужно создать, вы можете использовать массив напрямую. Применяются типичные функции массива. (то есть для получения размера вы можете использовать скаляр (@_))
В следующем примере показан тип подпрограммы, которую вы написали бы, используя обычные скаляры. Это было бы то же самое для ссылок, вам просто нужно разыменовать их перед их использованием.
#!/usr/bin/perl
my $result = multiply(2,4,5);
print "Result 1: $result\n";
$result = multiply(2,2);
print "Result 2: $result\n";
$result = multiply(2,2,3,5,6);
print "Result 3: $result\n";
sub multiply
{
my $ans = 1;
foreach my $x (@_) { $ans *= $x; }
return $ans;
}