RE: [Cascavel-pm] Funções com argumentos de arrays

Luis Campos de Carvalho monsieur_champs em yahoo.com.br
Sexta Janeiro 6 09:25:42 PST 2006


  Claro que não funciona. Você não leu o manual. 
  Aqui tem meu exemplo, já que vocês funcionam apenas à base de exemplos...

__PERL__


use strict;
use warnings;
use Data::Dumper;

# teste para exemplificar o uso de templates de subrotinas
sub my_sub ( \@ $ \@ ) {
    my @args = @_;
    print "Despejando argumentos coletados:\n";
    print Dumper( @args );
    print "\n"x2;

    # derreferenciando o argumento #1 (para um array)
    my @array_1 = @{$args[0]};
    # o argumento #2 não precisa ser derreferenciado (é um escalar)
    my $scalar  = $args[1];
    # derreferenciando o argumento #3 (para outro array)
    my @array_2 = @{$args[2]};
    
    # Imprime a família toda agora...
    print "Array #1:\n", Dumper( @array_1 ), "\n\n";
    print "Escalar: $scalar\n\n";
    print "Array #2:\n", Dumper( @array_2 ), "\n\n";

    # fim!
}

my @a = qw( primeiro array );
my @b = qw( segundo array );
my $calar = 'escalar';

# Repare na elegância da minha chamada:
# ela parece até com uma palavra-chave do perl...
my_sub @a, $calar, @b;
__END__

  Putamplexos desapontados!

--- Brinde Storm - Steven Koch <s.koch em brindestorm.com> escreveu:

> Digamos então: 
> <perl>
> @a  = ('a1','a2','a3','b1','b2','b3');
> @b  = ('x1','w1','v1');
> 
> print "@a"."\n em b\n\n" ;
> 
> minha_funcao(@a, 3, @b);
> 
> sub minha_funcao(\@, \$,\@ ){
> 	my( $arr_ref1, $scalar, $arr_ref2 ) = @_;
> 
> print "\n 
> array= @{$arr_ref1} \n
> lugar = ${$scalar} \n
> elementos = @{$arr_ref2}
> \n";
> } 
> </perl>
> 
> Mas não imprime nada
> 
> 
> 
> 
> -----Mensagem original-----
> De: cascavel-pm-bounces em pm.org [mailto:cascavel-pm-bounces em pm.org] Em nome
> de Luis Campos de Carvalho
> Enviada: sexta-feira, 6 de Janeiro de 2006 16:49
> Para: Cascavel Perl Mongers
> Assunto: RE: [Cascavel-pm] Funções com argumentos de arrays
> 
> 
>   Claro que pode! 
>   Mas deve passar referências para os arrays, não os próprios arrays! 
> 
>   Assim:
> 
>   @array = qw( isto eh um array de palavras );
>   $referencia_para_array = \@array;
> 
>   minha_funcao( $referencia_para_array );
> 
>   # ou, mesma coisa, mas mais simples:
>   minha funcao( \@array );
> 
>   # Se precisar passar mais de um, pode fazer assim:
>   outra_funcao( \@array1, \@array2, \@array3 );
> 
>   # pode passar quantos arrays quiser.
> 
>   Putamplexos!
>  
> --- Brinde Storm - Steven Koch <s.koch em brindestorm.com> escreveu:
> 
> > Não posso passar mais de um array como argumento??
> > 
> > -----Mensagem original-----
> > De: cascavel-pm-bounces+s.koch=brindestorm.com em pm.org
> > [mailto:cascavel-pm-bounces+s.koch=brindestorm.com em pm.org] Em nome de 
> > Brinde Storm - Steven Koch
> > Enviada: sexta-feira, 6 de Janeiro de 2006 16:35
> > Para: 'Cascavel Perl Mongers'
> > Assunto: RE: [Cascavel-pm] Funções com argumentos de arrays
> > 
> > Quer dizer q se eu criar um pacote com funções e depois querer que 
> > outros a utilizem tenho que seguir este isso, arrays no final?
> > 
> > -----Mensagem original-----
> > De: cascavel-pm-bounces em pm.org [mailto:cascavel-pm-bounces em pm.org] Em 
> > nome de Marco Lima
> > Enviada: sexta-feira, 6 de Janeiro de 2006 16:19
> > Para: Cascavel Perl Mongers
> > Assunto: Re: [Cascavel-pm] Funções com argumentos de arrays
> > 
> > use referência !
> > 
> > para passar uma lista vc soh conseguiria no final tipo ..
> > 
> > minhaFuncao($pos, @args2);
> > 
> > Mas isso naum eh bom ... por isso referencie sua lista e passe a 
> > referencia dela.
> > 
> > [ ]'s
> > 
> > > Como posso fazer isso em Perl
> > >  
> > > minhaFuncao( @args1, $pos, @args2);
> > >  
> > > Fiz isso mas não esta a funcionar:
> > > 
> > > sub minhaFuncao(){
> > >     my(@args1, $pos, @args2) = @_;
> > >     ...
> > > }
> > >  
> > > =P
> > > 
> > > _______________________________________________
> > > Cascavel-pm mailing list
> > > Cascavel-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > > 
> > > 
> > 
> > --
> > 
> > Marco Lima    
> > J. A. P. H.      
> > 
> > marco.lima em e-via.com.br
> > mago em rio.pm.org
> > mago em cpan.org
> > 
> > Sociedade Perl do Brasil   |   http://www.perl.org.br
> > Perl Monks                 |   http://www.perlmonks.org
> > Brasil Perl Mongers        |   http://brasil.pm.org
> > 
> > Register Linux User #355235
> > Slackware Linux, for the subgenius
> > 
> > "Ninguém é tão grande que não possa aprender, e nem tão pequeno que 
> > não possa ensinar"
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > 
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > 
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > 
> 
> 
> --
> Luis Campos de Carvalho
> Member of "São Paulo Perl Mongers",
> Unix SysAdmin & OCP/DBA Oracle
> 
> 
> 	
> 
> 
> 
> 	
> 		
> _______________________________________________________
> Yahoo! doce lar. Faça do Yahoo! sua homepage. 
> http://br.yahoo.com/homepageset.html 
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 


--
Luis Campos de Carvalho
Member of "São Paulo Perl Mongers",
Unix SysAdmin & OCP/DBA Oracle


	



	
		
_______________________________________________________ 
Yahoo! doce lar. Faça do Yahoo! sua homepage. 
http://br.yahoo.com/homepageset.html 



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