GDBM mit Xampp

Alles, was Perl betrifft, kann hier besprochen werden.

GDBM mit Xampp

Postby Eazy79 » 24. January 2005 19:13

Hallo Leute,

folgendes Problem drückt meinen Schuh. XAMPP frisch und aktuell unter WinXP installiert. Ich muss an GDBM Dateien rankommen und diese am besten in SQL Dateien parsen. Ich habe allerdings massive Probleme erstmal überhaupt an diese GDBM Dateien ranzukommen. Hier mal mein Quellcode (diese Beispiel soll nur mal GDBM Dateien schreiben, damit ich sehe das das GDBM Modul überhaupt tut):

#!C:/apachefriends/xampp/perl/bin/perl.exe -w

#Libs
use strict;
use GDBM_File;

#Variables
my $dbfile = "c:/test/file.db";

#User Printout
print "Content-Type: text/html\n\n";
print "<html><body>";
print "Perl OK<br>";
print "DB File: $dbfile";

#Write a GDBM File
my %h;
tie %h, 'GDBM_File', $dbfile, &GDBM_WRCREAT, 0640;

$h{'Key1'} = "value1";
$h{'Key2'} = "value2";
$h{'Key3'} = "value3";

untie %h;

#User Printout
print "<br>GDBM File done";
print "</body></html>";



Wie man sieht verwende ich den XAMPP unter Windows. Soweit alles okay. Doch wenn ich das Script ausführen will, bricht die Leistung weg und nix passiert??! Wo mach ich denn bitte was falsch??? Bin echt am verzweifeln!

Im Apache Error Log steht folgender Fehler, was wiederum daruf schließen lässt, daß das GDBM Modul doch nicht richtig eingebunden ist:

Premature end of script headers: gdbm.pl
[Mon Jan 24 18:41:21 2005] [error] [client 127.0.0.1] Can't locate loadable object for module GDBM_File in @INC (@INC contains: C:/apachefriends/xampp/perl/lib C:/apachefriends/xampp/perl/site/lib .) at C:/apachefriends/xampp/cgi-bin/gdbm.pl line 5\r
[Mon Jan 24 18:41:21 2005] [error] [client 127.0.0.1] Compilation failed in require at C:/apachefriends/xampp/cgi-bin/gdbm.pl line 5.\r
[Mon Jan 24 18:41:21 2005] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at C:/apachefriends/xampp/cgi-bin/gdbm.pl line 5.\r
[Mon Jan 24 18:41:21 2005] [error] [client 127.0.0.1] File does not exist: C:/apachefriends/xampp/htdocs/favicon.ico


Wenn ich jetzt noch das Perlscript auf der Konsole ausführe so meldet mir der Interpreter folgendes:


syntax error in file gdbm.pl at line 4, next 2 tokens "use strict"
Illegal modulus of constant zero in file gdbm.pl at line 17, next 2 tokens "h;"
Illegal modulus of constant zero in file gdbm.pl at line 18, next 2 tokens "h,"
Illegal modulus of constant zero in file gdbm.pl at line 24, next 2 tokens "h;"
Execution of gdbm.pl aborted due to compilation errors.


Okay, anscheinend vermisst er doch das GDBM Modul, aber warum stört er sich denn bitte an dem use strict??? Ist ja wohl eine sehr elementare Anweisung!

Ach ja, habe das Package, also gdbm_file.pm in das LIB Verzeichniss von Perl, bei mir also C:\apachefriends\xampp\perl\lib\, und im Auto Verzeichniss innerhalb des Perl Interpreters noch ein Verzeichniss C:\apachefriends\xampp\perl\lib\auto\gdbm_file\ mit den drei Dateien autosplit.ix - gdbm_file.bs -gdbm_file.so

Hier noch ein Link zum CPAN GDBM Package
User avatar
Eazy79
 
Posts: 7
Joined: 24. January 2005 18:58

GDBM unter Linux

Postby Eazy79 » 26. January 2005 12:55

So, nachdem die CPAN die GDBM so blenden dokumentiert hat, habe ich herausgefunden, daß die GDBM nicht unter Windows lauffähig ist. Deswegen habe ich mir jetzt einen Suse Server aufgesetzt und das Ganze dort wiederholt. Jedoch Fehlanzeige. Hier ein Auszug aus der Error Log von Apache. Sieht danach aus, daß er das Perl Package nicht findet. Doch warum???? Hab die PM Datei sehr wohl, mittlerweilen sogar in alle, LIB Verzeichnisse von Perl kopiert. Er müsste diese also finden!!! Berechtigungen sind auch auf 777 gesetzt. Was mach ich bitte falsch!!!


[Wed Jan 26 11:15:16 2005] [error] [client 127.0.0.1] Can't locate loadable object for module GDBM_File in @INC (@INC contains: /opt/lampp/lib/perl5/5.8.4/i686-linux /opt/lampp/lib/perl5/5.8.4 /opt/lampp/lib/perl5/site_perl/5.8.4/i686-linux /opt/lampp/lib/perl5/site_perl/5.8.4 /opt/lampp/lib/perl5/site_perl .) at /opt/lampp/cgi-bin/gdbm.pl line 5
User avatar
Eazy79
 
Posts: 7
Joined: 24. January 2005 18:58

Postby deepsurfer » 26. January 2005 15:06

sorry wenn ich gegenfrage...

hast du die lib auch in die LINverzeichnisse von XAMPP kopiert oder in die LIB verzeichnisse von SuSE.???

chirio
Deep
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Eazy79 » 26. January 2005 15:39

Habe das Package, also die GDBM_File.pm, in die diese Verzeichnisse kopiert:

/opt/lampp/lib/perl5/5.8.4/i686-linux /opt/lampp/lib/perl5/5.8.4
/opt/lampp/lib/perl5/site_perl/5.8.4/i686-linux
/opt/lampp/lib/perl5/site_perl/5.8.4
/opt/lampp/lib/perl5/site_perl

Zusätzlich noch ins Auto Verzeichniss, ich denke mal diees Verzeichniss ist ja dafür da, daß ein Modul on the fly nachgeladen werden kann, ein Verzeichniss GDBM_File mit drei weiteren Dateien, die ich als GDBM Package noch vorrätig habe. Diese Package diente auch zu Erstellung der Dateien, die ich parsen soll.


Außerdem steht in der XAMPP Doku drin, daß GDBM, in der Version gdbm 1.8.0, von Haus aus installiert sein sollte. Zu finden hier
User avatar
Eazy79
 
Posts: 7
Joined: 24. January 2005 18:58

Postby Eazy79 » 28. January 2005 11:09

Okay, nachdem ich Perl, GDBM und Apache nicht unter einen Hut bringen kann, habe ich das Ganze jetzt auf die Konsole beschränkt. Anscheinend ist der Apache nicht in der Lage das Autoload der GDBM Module auszuführen. Führe ich meine Scripte unter der Konsole aus und fütter den Perl Interpreter damit geht's. Sei's drum. Ich muss die Dateien ja nur parsen und kein Webfrontend bieten. Schade, aber who cares :?
User avatar
Eazy79
 
Posts: 7
Joined: 24. January 2005 18:58


Return to Perl

Who is online

Users browsing this forum: No registered users and 8 guests