Thread Such-Script gesucht (15 answers)
Opened by WOtAN at 2005-08-03 12:47

Strat
 2005-08-03 13:29
#5380 #5380
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du use strict; und use warnings; verwendest, tust du dir beim fehlersuchen viel leichter. Auf meiner Homepage steht unter Vortraege meine Einfuehrung in Perl, da wird ein wenig dazu erklaert.

Code: (dl )
open (SR, $file);

kann es mal passieren, dass das oeffnen der Datei fehlschlaegt? Wenn man bei Befehlen, die nach aussen gehen, immer fehler abfragt, hat man gleich 90% weniger probleme.
Code: (dl )
open (SR, "<$file") or die "Error: couldn't open file '$file': $!\n";

oder
Code: (dl )
1
2
3
unless (open (SR, "<$file")) {
 die "Error: couldn't open file '$file': $!\n";
}


Ein CGI-Script wuerde ich folgendermaszen beginnen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /usr/bin/perl
use warnings; # aktiviert die Warnungen, die oft hilfreich sind
use strict; # ueberprueft code strenger auf korrektheit, siehe meinen Vortrag
use CGI;

# hier werden fehler/warnungen im browser ausgegeben; das hilft
# sehr beim entwickeln, sollte aber, sobald alles laeuft, deaktiviert
# werden, um z.B. einem Hacker moeglichst wenig Infos zu geben:
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

# stellt die Variable $FindBin::Bin zur verfuegung; die enthaelt den
# pfad zum ausgefuehrten script, weil bei einem webserver
# nicht sichergestellt ist, dass er immer in das verzeichnis des
# scriptes wechselt, in dem das script liegt. Und durch 
# verwendung von FindBin wird das Script unabhaengiger von aussen
use FindBin;
my $file = "$FindBin::Bin/lyrics.db";

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

# http-header ausgeben:
print $cgi->header();

# parameter einlesen:
my $sinterpret = lc( $cgi->param('interpret') );
my $stitle     = lc( $cgi->param('title') );

# datei oeffnen:
unless (open (SR, "<$file")) {
  die "Error: couldn't open file '$file': $!";
} # unless

# einlesen:
while (my $rid = <SR>) {
  my $interpret = lc(<SR>);
  my $title = lc(<SR>);

  chomp($rid); chomp($interpret); chomp($title); # zeilenenden abschneiden

  # usw.

} # while

# datei schliessen
close (SR);
\n\n

<!--EDIT|Strat|1123061811-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Such-Script gesucht