Spaces beim schreiben einer Datei -> woher kommen die!?!?
Hans Watzinger
- perl
0 FrankS0 Stefan Bach
Hallöchen =)
Danke fürs herschauen!
#!/usr/bin/perl
use CGI;
use strict;
use HTML::Template;
print "Content-type: text/html\n\n";
open(INFO, "<info.dat") || die "Error while opening the datafile!\n";
my @info=<INFO>;
close(INFO);
print "Username: -> $info[0]<br>\n";
print "Password: -> $info[1]<br>\n";
print "Birthday: -> $info[2]<br>\n";
print "<br>************************<br><br>";
$info[1]="new_pass\n";
open(INFO, ">info.dat") || die "Error while opening the datafile!\n";
print INFO "@info";
close(INFO);
open(INFO, "<info.dat") || die "Error while opening the datafile!\n";
my @foo=<INFO>;
close(INFO);
print "Username: -> $foo[0]<br>\n";
print "Password: -> $foo[1]<br>\n";
print "Birthday: -> $foo[2]<br>\n";
Aqua
83245798ghj?lsfdgh94385
11.4.1977
info.dat auf chmod 666 setzen
as Perl-script auf 755 und dann im Browser 10 mal aufrufen.
Die Datafile ist dann mit Leerzeichen durchsetzt, (gaaanz viele)
jedoch kann ich beim ganzen Schreib-Prozess im Perl-Script
keinen Space finden der stören würde.
Danke für Hilfe
Aqua
Moin.
print INFO "@info";
simple Antwort:
print INFO @info;
sonst wird ein String geprintet, bei dem @info interpoliert wird. Und Elemente eines Arrays werden per Space getrennt...
Gruß Frank
Hallo,
open(INFO, ">info.dat") || die "Error while opening the datafile!\n";
print INFO "@info";
close(INFO);
Wenn du auf diese Art ein Array im Scalaren Kontext verwendest, dann werden die einzelnen Elemente getrennt durch den Inhalt von $`` hintereinandergeschrieben. Infos findest du in perlvar:
| $LIST_SEPARATOR
| $``
| This is like $, except that it applies to array and slice values
| interpolated into a double-quoted string (or similar interpreted
| string). Default is a space. (Mnemonic: obvious, I think.)
Daher kommen deine Spaces. Bevor du jetzt $`` auf einen anderen Wert setzt solltest du lieber dein Konstrukt ändern. Zum Beispiel:
print "$_" for (@info);
Viele Grüße,
Stefan