Можно создать дубликат: How do pass one array and one string as arguments to a function?проход массива и скаляр к подпрограмме Perl
У меня есть функция, или подпрограмму, которая принимает в качестве первого параметра в виде массива, а второй параметр, как скаляр. Например,
sub calc {
my @array = $_[0];
my $scalar = $_[1];
print @array, $scalar;
}
Проблема заключается в том, что функция делает массив равен первому значению массива, переданного в, и скаляр быть вторым значением массива, переданного в. Когда я хочу, чтобы первый массив, чтобы быть всем массивом, мне не нужно делать глубокую копию массива. Например,
my @array = ('51', 'M');
my $scalar = 21;
и
calc(@array, $scalar)
напечатает 51 M
, когда я хочу 51 M 21
.
Обратите внимание, что вторая часть моего ответа сделает копию массива. Вы также можете просто оставить его в качестве ссылки и получить доступ к нему по всей вашей функции. – happydave
На самом деле это не работает, я попробовал. Вы проверили это? –
Извините, я полагаю, что @ применяется до [0]. Я поставил фиксированную версию с фигурными скобками вокруг $ _ [0]. – happydave