Jump to content


Brasilio Thomazo

Member Since 24/10/2009
Offline Last Active 31/10/2009, 13:36
-----

Topics I've Started

Ajuda Com Modulo Perl Pm

24/10/2009, 07:45

Bom Dia a Todos!

Eu sou novo aqui no forum, mais ja tem uns anos que prgramo em Perl, porem parei faz alguns anos pq estava programando só em PHP e Asp e resolvi retomar os estudos em Perl, porem pintou uma duvida.

É o seguinte: Tenho 3 arquivos de modulo perl .pm
São eles:
#PSP.pm
	package PSP;
	use strict;
	use warnings;
	use DBI;
	require Exporter;
	use Usuario;
	use Forum;
	our @ISA = qw (PSP::Usuario PSP::Forum);

sub new {
	my ($cl, $self) = (shift, {});
	$cl = ref($cl) || $cl;
	return bless $self, $cl;
}

sub mysqlConn {
	my ($host, $user, $pass, $db, $mycnf) = ('localhost', '', '', '`psp`', '/usr/local/mysql6/my.cnf');
	my $dsn = "DBI:mysql:database=host=$host;database=psp;mysql_read_default_file=$mycnf";
	my $dbh = DBI->connect($dsn, $user, $pass, {'RaiseError' => 1}) || die "Erro mysql " . $DBI::errstr;
	return $dbh;
}
.....

#Forum.pm
	package PSP::Forum;
	use strict;
	use warnings;
	use PSP;
	my ($db, $dbh)  = ('`psp`', PSP->mysqlConn);

sub new {
	my ($cl, $self) = (shift, {});
	$cl = ref($cl) || $cl;
	return bless $self, $cl;
}
.....

#Usuario.pm
	package PSP::Usuario;
	use strict;
	use warnings;
	use PSP;
	my ($db, $dbh)  = ('`psp`', PSP->mysqlConn());

sub new {
	my ($cl, $self) = (shift, {});
	$cl = ref($cl) || $cl;
	return bless $self, $cl;
}
......

#teste.pl
#!/usr/bin/perl -w
use PSP;
print "Content-type: text/html\n\n";

Preciso usar as funções de PSP::Usuario e PSP::Forum em meus arquivos perl (.pl) só adcionado use PSP;, até ai normal,
porem não consgo usar as funções de PSP.PM em Forum.PM e Usuario.PM, acusa o erro de (Can't locate object method "mysqlConn" via package "PSP")

Agora vem o mais incrivel, oque não estou entendendo.

Se na PSP.pm eu fizer assim
use Usuario;
use Forum;
O erro vai ser : (Can't locate object method "mysqlConn" via package "PSP" in Forum.pm line 5)

Agora se eu fizer assim
use Forum;
use Usuario;
O erro vai ser : (Can't locate object method "mysqlConn" via package "PSP" in Usuario.pm line 5)

Em resumo o modulo que carregar primeiro é rei, o segundo não podera usar as funções de PSP.pm, pq isso ein?
Não consigo intender, onde esta o erro?
E o pior é que eu nessecito usar as funções de PSP.PM nos dois Modulos e não é só a PSP->mysqlConn() tem mais.

Alguem ai pode me exclarecer essa duvida?
Desde Já eu agradeço!!

Caracas Maluco ... Postei no local errado! Que falta de atenção a minha! Moderador Desculpa ai! Se der move pro lugar correto! Desculpa ai!

IPB Skin By Virteq