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

Adriano Ferreira a.r.ferreira em gmail.com
Sexta Janeiro 26 07:16:48 PST 2007


On 1/26/07, André Garcia Carneiro <andre.garcia.carneir em terra.com.br> wrote:
>
> Desculpe a intromissão, mas não entendi a declaração da sua sub, principalmente os parênteses, poderia
> esclarecer, por gentileza?
>
> Cheers!

A mágica que o Caio usou são os protótipos. Leia sobre eles em

http://perldoc.perl.org/perlsub.html#Prototypes-prototype-subroutine%2c-prototype

e porque eles não são uma idéia tão boa assim em

http://library.n0i.net/programming/perl/articles/fm_prototypes/

> sub g ($\@$) {
> my ($a, $bb, $c) = @_;
> my @b = @$bb;
> print "$a | @b | $c\n";
> }
>
>
> ---------- Cabeçalho original -----------
>
> De: cascavel-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
> Para: "Cascavel Perl Mongers" cascavel-pm em pm.org
> Cópia:
> Data: Fri, 26 Jan 2007 11:41:26 -0200
> Assunto: Re: [Cascavel-pm] Como passar arrays para funções... [Was: Duvida $dbh->prepare]
>
> > 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
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> > E-mail classificado pelo Identificador de Spam Inteligente Terra.
> > Para alterar a categoria classificada, visite
> >
> http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=andre.garcia.carneir&_l=1,1169818920.528857.1469.morondava.hst.terra.com.br,4794,Des15,Des15
> >
> > Esta mensagem foi verificada pelo E-mail Protegido Terra.
> > Scan engine: McAfee VirusScan / Atualizado em 25/01/2007 / Versão: 5.1.00/4949
> > Proteja o seu e-mail Terra: http://mail.terra.com.br/
> >
> >
>
> --
> André Garcia Carneiro
> Developer(Perl/PHP)
> Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


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