Передать массив и скаляр в подпрограмму 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.

29
задан Community 23 May 2017 в 11:53
поделиться