[Rio-pm] hash como parametro

Andre Carneiro andregarciacarneiro em gmail.com
Quarta Junho 30 10:12:57 PDT 2010


Eeee pressa...


Sub Func {
my ($hash, $scalar) = @_;

#alguma coisa aqui...

}


Desculpem-me


Cheers!!

Em 30 de junho de 2010 14:12, Andre Carneiro
<andregarciacarneiro em gmail.com>escreveu:

> ooops
>
>
> Faltou dizer que você precisa modificar o modo como recebe o valor na sua
> função...
>
>
> sub Func {
> my ($hash , $scalar);
>
> #alguma coisa aqui...
>
> }
>
>
> Cheers!
>
> Em 30 de junho de 2010 14:10, Andre Carneiro <
> andregarciacarneiro em gmail.com> escreveu:
>
> Humm... não entendi o problema exatamente, mas basicamente você está
>> passando um hash, e um escalar e não está conseguindo recuperar a
>> informação, certo?
>>
>> Tente passar o seu hash assim:
>>
>> SubHshScalar(\%hash, $scalar);
>>
>> Por que? Tente entender o que eu escrevi abaixo:
>>
>>
>>
>> Ex.: Suponha que o hash tenha o seguinte valor:
>>
>> %hash = (1 => "Andre");
>>
>> E o escalar tenha o seguinte valor:
>>
>> $scalar = " se orgulha do SP-PM";
>>
>> Traduzindo o conteúdo de @_;
>>
>> (1,'Andre','se orgulha do SP-PM');  # Certo?
>>
>> Traduzindo isso para um hash...Sim, isso pode ser um hash... Já vou
>> explicar porque traduzir para hash...
>>
>> (1=>'Andre',
>>  'se orgulha do SP-PM => undef
>> );
>>
>>
>> Explicação do porque traduzir para hash:
>>
>> Agora, olha como você tá recebendo o parâmetro na sua função...
>>
>>
>> (%hash, $scalar) = @_;
>>
>>
>> O primeiro parâmetro você diz que é um hash, ok? Portanto, Perl vai
>> procurar traduzir @_ em um hash, oras... Logo você vai ter um hash, ou seja:
>>
>>
>> (1=>'Andre',
>>  'se orgulha do SP-PM => undef
>> );
>>
>>
>> Tarááááá....
>>
>>
>> No entanto, se você passar o hash como referência, olha o que temos em @_
>> ...
>>
>> ( {1 => 'Andre'} , 'se orgulha do SP-PM );
>>
>>
>> Sacou???
>>
>>
>> Se não entendeu, me pergunte, que eu tento explicar de outra maneira.
>>
>>
>>
>> Cheers!
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2010/6/30 GmailPaqui <cpaqui em gmail.com>
>>
>>>  Caros, boa tarde!
>>>
>>>
>>> Estou tendo problemas para passar dois parâmetros para uma sub, um hash e
>>> um scalar.
>>>
>>> SubHashScalar(%hash, $scalar);
>>>
>>> sub SubHshScalar () {
>>>     my (%hash, $scalar) = @_;
>>>
>>>     print "@{[ %hash ]}\n";
>>>     printf "Scalar: %s", $scalar;
>>> }
>>>
>>> O parâmetro scalar não esta sendo configurado, se eu do um print no @_
>>> imprime o hash e o scalar.
>>>
>>> O que estou fazendo de errado?
>>>
>>> Obrigado.
>>> --
>>>  *Cleive Paqui*
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>>
>> --
>> André Garcia Carneiro
>> Analista/Desenvolvedor Perl
>> (11)82907780
>>
>
>
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20100630/da5b7a4c/attachment.html>


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