#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);#Header ausgeben
print "Content-type: text/html\n\n";
#Datei öffnen
my $url = "test.dat";
open(data, "<$url") || die "Datei '",$url,"' nicht gefunden";
Du kanst dir hier den Grund angeben lassen, warum das fehlschlug und mußt nicht raten (Datei nicht gefunden ist nur eione von zig Möglichkeiten).
open(data, "<$url") || die "Fehler beim öffnen von '$url'. Grund: $!";
(Übrigens sollen Filhandle in Großbuchstaben geschrieben werden, wenn du dich an ein paar Konventionen hälst, fällt es dir leichter deine und andere Programme zu lesen)
my @log = <data>;
close(data);
chomp(@log);
Man kann das zusamenfassen:
chomp (my @log = <data>);
close data;
#HTML-Ausgabe
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>\n";
print "<H1>Inhalt von '",$url,"':</H1>\n";
print "<TT>\n";
Hier bieten sich here Dokumente an oder die Verwendung des CGI Moduls.
print CGI::header(), CGI::start_html(-title => 'Test'),
CHI::h1("Inhalt von $url")', '<TT>';
Wie gesagt, die üblichen Fehler (keine Rechte, falsches Dateiformat, etc.) scheiden aus, da das Script läuft, wenn den open-Befehl entferne. Auch die Datei "test.dat" existiert im selben Verzeichnis wie das Test-Script.
Das muss nichts heißen. Nicht jeder server ist so eingestellt, dass der Standardpfad das gleiche wie der Pfad des Skriptes ist.
Du kannst es dir ausgeben lassen:
use Cwd;
print cwd();
Übrigens $url klingt für mich, als ob du versuchst eine entfernt liegende Resource zu öffnen, das geht aber nicht mit dem open Befehl. Aber vermutlich weißt du das.
Struppi.