[Cascavel-pm] Como passar arrays para funções... [Was: Duvida $dbh->prepare]
Caio Marcelo
cmarcelo em gmail.com
Sexta Janeiro 26 05:41:26 PST 2007
Olá,
On 1/26/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> On Jan 26, 2007, at 12:17 PM, Patty Silva wrote:
> > em minha subrotina eu tento passar assim:
> > my ($ids, em datas,$variavels)=@_;
> Isso que você quer fazer é possível (desafio: alguém sabe COMO
> fazer? FGlock: você, não vale...), mas pode ficar chato de entender
> para outras pessoas.
Fiquei na dúvida de quais eram exatamentes os requisitos do problema (manter
o ($a, @b, $c) = @_, ou permitir que possam ser passados sem ter que criar
a referência). Acabei fazendo o seguinte:
use strict;
use warnings;
sub f {
my ($a, @b, $c) = @_;
print "$a | @b | ". ($c ? $c : "NADA") . "\n";
}
sub g ($\@$) {
my ($a, $bb, $c) = @_;
my @b = @$bb;
print "$a | @b | $c\n";
}
my @arr = (1,2,3);
f('Perl', @arr, 'Cascavel');
g('Perl', @arr, 'Cascavel');
E a saída é:
Perl | 1 2 3 Cascavel | NADA
Perl | 1 2 3 | Cascavel
Pelo menos no quesito chamar passando um array no meio a coisa funciona, apesar
de poder ficar meio confuso, a pessoa achar que pode colocar uma lista
no lugar da @arr, porém isto não funciona.
Cheers,
Caio Marcelo
Mais detalhes sobre a lista de discussão Cascavel-pm