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

Save.pl Speichert nicht mehr ab !!



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Gast Gast
 2004-05-03 16:52
#2328 #2328
Hallo !

Ich habe eine Frage, meine Save.pl Script speichert Daten in eine Data.txt Datei ab. Dies tat sie, jetzt nicht ? Kann sich jemand mein Script anschauen ?

Script:

Code: (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
#!/usr/bin/perl

read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});

open(COMMENTS, ">>data.txt");   # HTML-Datei zum Schreiben öffnen

$Daten =~ s/%3E/\>\;/g;
$Daten =~ s/%3C/\<\;/g;
$Daten =~ tr/&=+/| -/;
$Daten =~ s/Name/\ \;/g;
$Daten =~ s/Firstname/\ \;/g;
$Daten =~ s/Street/\ \;/g;
$Daten =~ s/Nr/\ \;/g;
$Daten =~ s/%2F/\/\;/g;
$Daten =~ s/Code/\ \;/g;
$Daten =~ s/City/\ \;/g;
$Daten =~ s/Tel/\ \;/g;
$Daten =~ s/Email/\ \;/g;
$Daten =~ tr/;/ /;

$Daten =~ s/[ ]| //gi;
#$Daten =~ s/+/\-\;/g;

print COMMENTS "$Daten\n";

close(COMMENTS);

print "Content-type: text/html\n\n";
print "<html><head><TITLE>visualVIBES bioNET</TITLE></head>\n";
print "<body bgColor=#dcd299>\n";
print "<i style=color:#FF6633 style=font-family:Arial style=font-weight:bold style=font-size:50pt

style=filter:Glow(color=#FF5522, strength=10)>your entry has been saved </a></i>";
print "<p><hr noshade size=1><p>";
print "<i style=color:#FF6633 style=font-family:Arial style=font-size:50pt><a

href=\"[URL=http://localhost/index.html\>back</a></i>;]http://localhost/index.h....";[/URL]
print "</body>\n";
print "</html>\n";



Bearbeitet von Crian: CODE-Tags hinzugefügt.\n\n

<!--EDIT|Crian|1083593732-->
renee
 2004-05-03 16:54
#2329 #2329
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mach mal hinter open() noch ein
Code: (dl )
open(...) or die $!;

Dann bekommst wahrscheinlich eine Fehlermeldung...
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/
Ronnie
 2004-05-03 16:56
#2330 #2330
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Okay, du hast zwei Probleme:
Code: (dl )
1
2
use strict;
use warnings;

fehlen in deinem Code.

Die Ursache des Problems dürfte aber eher sein, das dein Skript, keine Dateien anlegen darf. Prüfe mal ob der Webserver (www-run, apache, nobody o.ä.) in das Verzeichniss/Datei schreiben darf.\n\n

<!--EDIT|Ronnie|1083589055-->
renee
 2004-05-03 17:04
#2331 #2331
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das wir er spätestens mit $! feststellen ;)
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/
visual
 2004-05-03 17:05
#2332 #2332
User since
2004-05-03
7 Artikel
BenutzerIn
[default_avatar]
Hi ! Das Script lief vorher so ! Ich brauchte kein "or Die"
Und auch kein use strict;
use warnings; oder so. Wo müsste das den reingeschrieben werden ?
Das Problem ist, dass das Script was in die Datei schreibt, leerzeichen und nicht die Daten die im Inputfeld standen !
renee
 2004-05-03 17:18
#2333 #2333
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist ganz schön mutig zu sagen "ich brauch das nicht!"...
Wenn Du nix geändert hast, dann müsste es ja laufen ;)

Man weiß nie, ob sich die Rechte sich geändert haben (Umstellung an der Konfig, ohne das Du etwas mitbekommen hast)...

Zum Parsen von Formulareingaben würde ich Dir das CGI-Modul empfehlen...

Die use-Sachen müsstes Du nach der Shebang am Anfang schreiben, ungefähr so:
Code: (dl )
1
2
3
4
#! /usr/bin/perl

use strict;
use warnings;


dann aber auch alle Variablen mit my deklarieren...
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/
Ronnie
 2004-05-03 17:28
#2334 #2334
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Eben, wenn du nichts verändert hast muss sich das Umfeld geändert haben. Entweder der Webserver läuft unter einem anderen user, oder du hast die Datei data.txt bearbeitet, und der Webserver kann in Folge nicht mehr in diese Datei schreiben, weil sie jetzt dir gehört. Schau doch einfach mal in das error.log des Webservers. Unter Linux/Apache könnte das z.B. so gehen:
Code: (dl )
less /var/log/apache/error.log

Allerdings solltest du hierzu Renés Vorschlag mit dem or die berücksichtigen:
Code: (dl )
open(COMMENTS, ">>data.txt") or die "Zugriff schlug fehl: $!";   
visual
 2004-05-03 17:45
#2335 #2335
User since
2004-05-03
7 Artikel
BenutzerIn
[default_avatar]
Hi !
Das Script ist aber sonst richtig oder ?
Also ein Script ist es ja nicht so richtig, da nur die STIN
gesplittet, oder so, wurde oder besser gesagt aufbereitet und und dann in eine Datei geschrieben wurde.
Ronnie
 2004-05-03 17:57
#2336 #2336
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
richtig im weitesten Sinne - es ist gruselig. Ändere es mal wie folgt ab:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

my $Daten; # Variablen immer deklarieren

read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
open(COMMENTS, ">>data.txt") or die $!;

den Rest kannst du erstmal so lassen.
Crian
 2004-05-03 18:20
#2337 #2337
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ohne strict machst Du Dich auf die Dauer unbeliebt, weil dann immer wieder Sachen auftreten, die die Tester nach Einsetzen des use stricts sofort sehen.

Außerdem solltest Du es verwenden, um eine saubere Trennung von Gültigkeitsbereichen der Variablen zu haben. Ich denke, Perl ohne strict ist ein Relikt aus Zeiten, wo es als besserer Shellskript-Ersatz dienen sollte.

Ich bin dafür, dass in Perl 6 der strikte Modus per default aktiv ist, man kann ihn dann ja immer noch ausstellen... ich hab aber keine Ahnung, ob soetwas geplant ist.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2004-05-03 16:52.