[Rio-pm] Problemas com rawsocket

Bruno Buss bruno.buss em gmail.com
Sexta Abril 20 16:53:11 PDT 2012


2012/4/20 Aureliano Guedes <guedes_1000 em hotmail.com>

>  Desculpe, Bruno (agora certo). Veja, $self->{PORT} esta dentro de &port,
> por isso chamar &port.
>

Você está fazendo uma grande bagunça ao chamar uma função, colocando um &
na frente dela.
Chamar uma função desta forma "&foo;" é a mesma coisa que chamar
"foo(@_);".
Daqui pra frente, pare de colocar "&" na frente das coisas a menos que você
saiba o que está fazendo :)

Veja o anexo teste.pl, para ter certeza que você entendeu.

O que está acontecendo no seu programa é que você está passando o @_, que
contem a referencia para o próprio objeto (se você tivesse feito "my $self
= shift;" no início da função, não teria ocorrido esse problema) e esta
passando isso para a sua função port, que por sua vez está atribuindo essa
referencia para $self->{PORT}.

Logo quando o módulo Net::RawIP tenta criar um pacote onde a porta destino
é "uma referencia para um objeto" que você passou... ele falha ;)



> Não acho que o caso seja este, assim mesmo acabei de testar segundo a sua
> dica e a IDE reclamou o erro, " Global symbol "$self" requires explicit
> package name at Packs.pm line 40. ".
>

Adicione o mesmo "my $self = shift;", igual você fez em todas as outras
funções do seu pacote e tente novamente.


>
> Ainda acho que o erro não esta no meu código e sim algum problema em o
> Net::RawIP controlar de alguma forma o pcap.
>

O erro é no seu código.

[ ]'s
-- 
Bruno C. Buss
http://www.brunobuss.net
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120420/6b0b3f44/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: teste.pl
Tipo: application/octet-stream
Tamanho: 168 bytes
Descrição: não disponível
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120420/6b0b3f44/attachment-0001.obj>


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