[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