[Rio-pm] hash como parametro

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


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20100630/d7f16e96/attachment.html>


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