Perl - Não consigo estanciar o objeto de uma classe [RESOLVIDO]

1. Perl - Não consigo estanciar o objeto de uma classe [RESOLVIDO]

José Cleydson Ferreira da Silva
cleysinhonv

(usa Ubuntu)

Enviado em 26/04/2011 - 14:44h

Olá pessoal,

Não consigo instanciar o objeto de uma classe em Perl. Criei a classe mas ao utilizá-la da o seguinte erro.

==> Can't locate object method "new" via pakage layout

O problema está no metodo new. Alguém pode orientar?


  


2. Re: Perl - Não consigo estanciar o objeto de uma classe [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 27/04/2011 - 01:40h

Posta o script, fica mais fácil obter ajuda!


3. Re: Perl - Não consigo estanciar o objeto de uma classe [RESOLVIDO]

José Cleydson Ferreira da Silva
cleysinhonv

(usa Ubuntu)

Enviado em 27/04/2011 - 07:48h

Classe que desenvolvi ...
-------------------------------------------
#!/usr/bin/perl

# Referencia: http://www.tutorialspoint.com/perl/perl_oo_perl.htm
package Layout;

use CGI;

$page = new CGI;


sub new {
my $class = shift();

my $self = {};
bless($self, $class );
return $self;

}


sub header()
{
my($self) = shift;

$header = '
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="description" content="">
<link href="estilo/Estilo.css" rel="stylesheet" type="text/css"></link>
<link rel="stylesheet" type="text/css" href="estilo/menuSuperior.css" media="all" />
<script language="javascript" type="text/javascript" src="js/menuSuperior.js"></script>
</head>
<body class="tundra " onload="">
<div class="aplicativo moldura0 conteudo">
<div class="superior">
<table>
<tr>
<td>
<h1> <a href="index.html"></a></h1>
</td>
<td class="celula1"></td>
</tr>
</table>
</div>
<div class="mediano autenticacao guardiao">
<div class="celula0"></div>
<div class="celula1">
<div class="mensagem"></div>
<div class="moldura1 autenticacao inicial">';



return $header;
}

sub menu()

{

my($self) = shift;

$menu = print '
<ul id="navmenu-h">

<li><a href="#fixo">Assemble</a>
<ul>
<li><a href="">Mount Genome</a></li>
<li><a href="">Insert Genome</a></li>
<li><a href=""></a></li>
</ul>
</li>

<li><a href="#fixo">Alignment</a>
<ul>
<li><a href="">Local</a></li>
<li><a href="">Multiples</a></li>
<li><a href=""></a></li>
</ul>
</li>

<li><a href="#fixo">DNA</a>
<ul>
<li><a href="">Write Prime</a></li>
<li><a href="l">Protein Code</a></li>
<li><a href="">Reverse Complement</a></li>
<li><a href="">Synthesize RNA strand</a></li>
<li><a href=""></a></li>
</ul>
</li>

<li><a href="#fixo"> Splicing </a>
<ul>
<li><a href="">Exon</a></li>
<li><a href="">Intron</a> <!--<ul id = "menuInterno">
<li><a href="">Natureza/Dispesa </li>
<li><a href="">Número Máximo de Itens/Pedido na DMT </li>
</ul>--></li>

<li><a href="xxx.pl"></a></li>
</ul>
</li>

<li><a href="#fixo"> Mutation </a>
<ul>
<li><a href="">Point Mutation</a></li>
<li><a href="">DNA-level Mutation</a> <!--<ul id = "menuInterno">
<li><a href="">Natureza/Dispesa </li>
<li><a href="">Número Máximo de Itens/Pedido na DMT </li>
</ul>--></li>

<li><a href=""></a></li>
</ul>
</li>

<li><a href="#fixo">Phylogene</a>
<ul>
<li><a href="">Tree Phylogenetic</a></li>
<li><a href=""></a></li>
</ul>
<li><a href="#fixo">Search</a>
<ul>
<li><a href="">Genbank</a></li>
<li><a href="">Swiss-Prot</a></li>
<li><a href=""></a></li>
</ul>
</li>

<li><a href="Cadastro.pl">Register</a>
<ul>
<li><a href="">User</a></li>
<li><a href="">Institution</a></li>
<li><a href="">Sequence</a></li>
<li><a href="">Reads</a></li>
<li><a href=""></a></li>
</ul>
</li>

<li><a href="">Sair</a></li>

</ul> ';

return $menu;
};


sub bodyTitle()
{
my($self) = shift;
$bodyTitle = '<h2 class="titulo1">$title</h2>';
return $bodyTitle;
}


sub inferior()
{

my($self) = shift;
$inferior = print '
<div class=""></div>

</div>
</div>
<div class="celula2"></div>
</div>
<div class="inferior">
<p></p>
</div>
</div> ';

return $inferior;
}

--------------------------------
Usando a classe.

#!/usr/bin/perl -w

use CGI;
use lib '/home/cleysinhonv/workspace/biopop/model/form';
use Layout;

$page = new CGI;
$page-> start_html();

my $layout = new Layout;

print p($layout->header());
print p($layout->menu());
print p($layout->bodyTitle());
print p($layout->inferior());

$page->end_html;





4. Estranho...

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 28/04/2011 - 08:17h

Testei aqui e foi de boa.


5. Re: Perl - Não consigo estanciar o objeto de uma classe [RESOLVIDO]

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 24/06/2011 - 07:20h

bom vamos la....

tome o habito de usar os seguintes trechos nos seus códigos... "use strict;" e "use warnings;"
... isso ira lhe dizer sobre os erros mais comuns.

Sua classe esta muito desorganizada e por isso fica dificil perceber qualquer erro nela.
o uso da suas classes no trecho abaixo esta errado e sua classe contem um ponto e virgula
';' ao final da sub menu.

Mais uma dica... concidere usar um engine de template para melhorar isso ;)

código fonte
http://pastie.org/2115464







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts