Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12240[/thread]

mod_perl externe Funktionen



<< >> 8 Einträge, 1 Seite
bieber
 2008-07-24 14:58
#112585 #112585
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
servus,

ich habe leider gerade das Problem, welches bereits hier http://board.perl-community.de/thread/3242/startWi... angesprochen wurde

Ich nutze LAMPP auf einem Linux-Server, mit mod_perl. Wenn ich einfache sub-Funktionen in externe Dateien auslagere (ohne package etc.) bekomme ich die Fehlermeldung "Not a CODE reference ", wenn ich Versuche die Funktion aufzurufen.



gibt es da mitlerweile neue Infos? würde mir eigentlich gerne den Weg über Module ersparen, und den LAMPP-Server kann ich leider nicht ändern

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);

use DBI;

use lib "lib/";
use CGI::Session qw/-ip-match/;
use functions;

#cgi-Objekt erzeugen
my $cgi = CGI->new();
print $cgi->header();

huhu();#Funktion aus functions.pm
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
GwenDragon
 2008-07-24 15:04
#112587 #112587
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Quote
Wenn ich einfache sub-Funktionen in externe Dateien auslagere (ohne package etc.)
Und wie lagerst du aus?

Quote
bekomme ich die Fehlermeldung "Not a CODE reference ", wenn ich Versuche die Funktion aufzurufen.

Welche Fehlermeldung ist das genau, keine Zeilennummer? Schau doch mal in Fehlerlog des Servers.
bieber
 2008-07-24 15:25
#112593 #112593
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
im error_log steht genau das selbe wie im Browser

Code: (dl )
[error] [Thu Jul 24 14:00:10 2008] -e: Not a CODE reference at /oracle_tool/login.pl line 43.\n


ausgelagert habe ich in die Datei functions.pm die wie folgt aussieht:

Code (perl): (dl )
1
2
3
4
5
6
7
#!/usr/bin/perl

sub huhu{

}

1;


hab ich von nem alten script kopiert, ist also mal gelaufen, aber halt in einer anderen Server-Umgebung (wobei ich keine Ahnung habe, ob das so richtig ist wie ich die Funktionen auslagere)

edit: die Zeilennummer ist genau die Zeile des Funktionsaufruf´s... hab den code nur gekürzt
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
GwenDragon
 2008-07-24 15:38
#112595 #112595
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Missverstehe ich dich irgendwie?
Hast du schon in /oracle_tool/login.pl Zeile 43 reingesehen?
bieber
 2008-07-24 16:10
#112600 #112600
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
ja habe ich... sorry ich blicke irgendwie selbst gerade nicht durch

ich habe jetzt zum Testen komplett den code genutzt der oben gepostet ist... jetzt bekomm ich im Browser und error_log diese Meldung:

Undefined subroutine &ModPerl::ROOT::ModPerl::PerlRunPrefork::oracle_tool_test_2epl::huhu called at /oracle_tool/test.pl line 19.

wenn ich an stelle von "use" "require" nehme, kommt der selbe fehler... nach ein paar mal F5 kommt aber wieder

Not a CODE reference at /oracle_tool/test.pl line 19.


ich bin gerade völlig verwirrt, wie können unterschiedliche Fehler kommen auf der selben Seite?
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
GwenDragon
 2008-07-24 16:17
#112602 #112602
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Undefined subroutine &ModPerl::ROOT::ModPerl::PerlRunPrefork::oracle_tool_test_2epl::huhu called at /oracle_tool/test.pl line 19. Bedeutet: Perl kennt nicht die Funktion huhu.
Und warum? Weil diese nicht im Hauptskript bekannt ist sondern nur im Modul functions.
Dein Modul functions exportiert keine Funktion namens huhu.

Schau dir doch bitte mal http://wiki.perl-community.de/bin/view/Wissensbasi... an. Dort wird beschrieben wie du standardkonform Module erstellst.
renee
 2008-07-24 16:21
#112604 #112604
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das ist das was ich im oben genannten Thread gemeint habe mit "Bei mod_perl gelten andere Gesetze". mod_perl schafft neue Namensräume, deswegen funktioniert das nicht so wie in einer Umgebung ohne mod_perl. Mein Tipp: mach ordentliche packages draus und exportier die Funktionen. Das ist in functions.pm kaum Arbeit und im Skript musst Du (fast) nix ändern.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bieber
 2008-07-24 16:25
#112606 #112606
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
okay,
es sind schon einige Dinge die ich neu machen bzw. ändern muss, aber wenn es sein muss, muss es sein

vielen Dank
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
<< >> 8 Einträge, 1 Seite



View all threads created 2008-07-24 14:58.