PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : modul: Kalender: use --> 500 internal server error



macolo
10-11-2002, 21:43
hallo

ich hirne schon den ganzen abend an diesem problem herum: ich möchte ein modul "Kalender" einbinden, von hier:

http://www.i-netlab.de/downloads/kalender.html

also hab ich den code kopiert und unter /Perl/lib ins file calendar.pm gepastet.

hier ist mein perl script:


#!/usr/bin/perl
##
##
use strict;
use CGI::Carp qw(fatalsToBrowser);
use calendar qw(month_as_html);

print <<HEAD;
Content-type: text/html\n\n
<html><body>
HEAD

my $monthtab = month_as_html("11","2002");
print $monthtab;

print<<FOOT;
</BODY></HTML>
FOOT


use calendar qw(month_as_html); wenn ich diese zeile auskommentiere, dann funktioniert eigentlich alles, ausser eben der hauptzweck - die monatstabelle.

hier ist der month_as_html-ausschnitt aus der calendar.pm (der rest ist unter obiger url zu begutachten) :


################################################## #######################

# Monat als HTML Tabelle mit Feiertagen
sub month_as_html{
return "-1" if scalar @_ < 2;
my ($month, $year) = @_;
my %feiertag = &feiertage($year);
my %fixtag = &fixtage($year);
my $x_day = 1;
my $row = 0;
my $table = ();
my @wochentag = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @monat = qw(null Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my $first_day = &weekday(1, $month, $year, 1);
my $days = &days_of_month($month, $year);
$table = "<table border cellpadding=0 cellspacing=0 width=\"100%\">\n";
$table .= "<tr>\n";
$table .= "<th colspan=7>$monat[$month] $year</th>\n";
$table .= "</tr>\n<tr>";
for(0..6){
$table .= "<th>$wochentag[$_]</th>\n"
}
$table .= "</tr>\n";
# Hier wird der Kalender zusammengebaut
for($row = 1; $row <= 6; $row ++){
$table .= "<tr>\n";
for(0..6){
if( $first_day <= $_ and $row == 1){ # Einstieg in Kalender
$table .= "<td>$x_day <b>$feiertag{\"$x_day.$month.$year\"}</b>
<b>$fixtag{\"$x_day.$month.$year\"}</b></td>\n";
$x_day++;
}
elsif( $x_day <= $days and $row != 1){
$table .= "<td>$x_day <b>$feiertag{\"$x_day.$month.$year\"}</b>
<b>$fixtag{\"$x_day.$month.$year\"}</b></td>\n";
$x_day++;
}
else{ # Tag stimmt nicht überein
$table .= "<td> </td>\n";
}
}
$table .= "</tr>\n";
}
# Abschluss der Tabelle
$table .= "</table>\n";
return $table;
}

################################################## #######################

ich hab perl 5.8 und apache2 alles für win32 und lasse es unter winxp laufen. alle anderen scripts funktionieren.

greets

macolo

Pingu
11-11-2002, 12:49
Hi,

ich habe mir das zwar nicht alles angesehen, aber ich tippe einfach mal so auf den typischen Windows 'Fehler'.

Im apache log steht bestimmt die Fehlermeldung mit "... end of script" oder?

Denn dann ist das das typische Zeilenende Problem. D.h. auf einem GNU/Linux System muß das Zeilenende ein einfaches LF sein, damit der PERL Interpreter das kann. Wie das bei einem Windows System sein muß (LF oder LF/CR) mußt du selbst mal probieren.

Beim Auspacken von .gz Archiven mit WinZip muß ein Häckchen sein bei 'preserve \n' oder 'preserve end of line characjter'. Oder sowas sinngemäß.


-= Pingu =-

macolo
11-11-2002, 14:11
danke für die antwort! *freu*

hmm, ja, ich krieg das aus dem log:

[Mon Nov 11 15:07:31 2002] [error] [client 127.0.0.1] Premature end of script headers: calendar.pl
[Mon Nov 11 15:07:31 2002] [error] [client 127.0.0.1] Unrecognized character \xA4 at G:/Programme/Perl/lib/calendar.pm line 145.
[Mon Nov 11 15:07:31 2002] [error] [client 127.0.0.1] Compilation failed in require at G:/Programme/Apache2/cgi-bin/calendar.pl line 6.
[Mon Nov 11 15:07:31 2002] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at G:/Programme/Apache2/cgi-bin/calendar.pl line 6.

ich habs mal mit open perl ide kompiliert, dort krieg ich nur den fehler vom cwd.pm line 151. dort steht: "use carp;" was kann daran wohl falsch sein? open perl ide meint dazu:


No DB::DB routine defined at G:/Programme/Perl/lib/Cwd.pm line 151.
BEGIN failed--compilation aborted at G:/Programme/Perl/lib/Cwd.pm line 151.

hää? was ist eine DB::DB routine? :) vielleicht ist das calendar-modul ein bisschen buggy. :(

tia, greets

macolo

netzmeister
11-11-2002, 15:25
Hallo,

kann es sein, daß Dir ein Perl Modul fehlt?

Schaue mal hier: http://www.cpan.org/modules/index.html

Dort findest Du die Module.

Viele Grüße

Eicke