[Cascavel-pm] Como passar arrays para funções... [Was: Duvida $dbh->prepare]

Solli Honorio shonorio em gmail.com
Sexta Janeiro 26 16:51:36 PST 2007


>
>
> > So + uma duvida..
>
>   /me lança um olhar de reprovação sobre todos os membros desta
> lista de discussão que não se preocuparam em mudar o tópico das
> mensagens, acompanhando a mudança de assunto e ao mesmo tempo
> permitindo que a lista continue se organizando por threads e assuntos.
>
>   (Relaxa, Patty, que desta vez quem pisou no tomate foram as
> "raposas" da lista... eheheheh)
>
> > em minha subrotina eu tento passar assim:
> > my ($ids, em datas,$variavels)=@_;
> >                       |______________________
> >
> >     |
> > Minha duvida eh.. eu posso passar um ARRAY??


Patty, subrotinas sempre recebem através do array @_, sendo assim se vc
colocar o primeiro ou o segundo elemento de passagem de parametros como
array, todos o resto será confundido dentro o primeiro, ou segundo array.
Confuso ?

Vc está dizendo algo assim : me passe um elemento, depois me passe uma lista
de elementos de qualquer tamanho e por último me passe um elemento... mas
como assim, se o compilador passou todos os elementos no segundo ítem.  Mas
claro ? Espero :)

  Patty, em Perl a gente pode fazer praticamente qualquer coisa.
>   O problema é saber se interessa.
>
>   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.
>
>   Existem duas possibilidades para resolver este problema:


Ou três, que tal utilizar hash para a passagem de parametros ? Tipo assim :
<codigo>
my %hash = ( id        => $ids,
             datas     => \@datas,
             variaveis => $variaveis );

subrotina (\%hash);

sub subrotina {
    my $argumento = shift;

    die 'Invalido argumento, esperado uma referencia de hash' if
        ref $argumento ne 'HASH';

    print "$argumento->{id}\n";
    foreach ( $argumento->{datas} ) {
        print "$_\n";
    }
    print "$argumento->{variaveis}\n";
}
</codigo>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070126/98c3573c/attachment.html 


Mais detalhes sobre a lista de discussão Cascavel-pm