Duplicar posibles: How do pass one array and one string as arguments to a function?array Pass y escalar a una subrutina Perl
Tengo una función o subrutina, que se lleva en el primer parámetro como una matriz y el segundo parámetro como un escalar Por ejemplo,
sub calc {
my @array = $_[0];
my $scalar = $_[1];
print @array, $scalar;
}
El problema es que la función es hacer la matriz igual al primer valor de la matriz pasada en, y el escalar que es el segundo valor de la matriz ha pasado. Cuando quiero la primera array para ser la matriz completa, no necesito hacer una copia profunda de la matriz. Por ejemplo,
my @array = ('51', 'M');
my $scalar = 21;
y
calc(@array, $scalar)
imprimirá 51 M
cuando quiero 51 M 21
.
Tenga en cuenta que la segunda parte de mi respuesta hará una copia de la matriz. También puede dejarlo como referencia y acceder a él de manera apropiada a través de su función – happydave
Esto en realidad no funciona, lo intenté. ¿Has probado esto? –
Lo siento, supongo que @ se aplica antes que [0]. Puse una versión fija con llaves alrededor de $ _ [0]. – happydave