[Cascavel-pm] Instanciando um objeto...

Ednardo Lobo ednardo em elobo.cjb.net
Segunda Janeiro 20 08:44:09 CST 2003


    Oi Márcia!!

    Você esqueceu  um pequeno detalhe,  a última instrução em  um pacote
deve retornar um valor logicamente verdadeiro.  No caso do seu pacote, a
última instrução 'my %flags = ()',  retonará um valor falso, porque você
está atribuindo  um valor indefinido (logicamente  avaliado como falso).
Simplesmente acrescente a  linha de código '1;' após  a última instrução
em seu pacote e nenhum erro será mais reportado.

    Abraços,


On Mon, Jan 20, 2003 at 10:07:52AM -0200, Marcia Henke wrote:
> Olá pessoal !!
>
> Estou usando perl 5.6.1, em um SO SuSE7.3.
> Estou  com um  pequeno problema  na  instanciação do  meu objeto  tipo
> hashes.  Criei um  pacote ServicesStatus.pm  e quero  intanciá-lo, mas
> estou tendo o seguinte erro:
>
> ServicesStatus.pm did not return  a true value at ./instanciaHashes.pl
> line 3.
> BEGIN failed--compilation aborted at ./instanciaHashes.pl line 3.
> 
> Meu pacote .pm inicia da seguinte forma :
> 
> package ServicesStatus;
> 
> my %flags = ();
> 
> sub new {
>   my $type = shift;
>   my $self = {};
>   _readStatusFile();
>   $self->{status} = \%flags;
>   return bless $self, $type;
> }
> 
> sub _readStatusFile {
>   open (FILE, "< services.dat") or die "Impossível abrir services.dat:$!";
>   while (<FILE>) {
>     chomp;
>     ($key, $value) = split(" ", $_, 2);
>     if ($key && $value) {
>       $flags{$key} = $value;
>     }
>     print "O valor da chave $key é $value.\n";
>   }
>   close (FILE);
> }
>
> E a  classe de instancia  é um .pl  que esta implementado  da seguinte
> forma : #!/usr/bin/perl -w
>
> use ServicesStatus;
> 
> my $obj = new ServicesStatus();
> 
> O que estou fazendo errado ???
> 
> Agradeço a atenção
> Márcia

-- 
    Ednardo Lobo - www.elobo.cjb.net



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