Maximale Stringlänge
Mirwais
- perl
0 speedy0 Mirwais0 Kai Diefenbach0 speedy0 Peter Squentz0 speedy
0 klaus0 Cheatah
Hallo Leute,
ich wollte eine Datei, die ca. 200 KB groß ist in einem String einlesen, doch leider merkte ich, daß mein String nur ca. 1/4 der Datei gespeichert hat. Wie kann ich die Stringlänge vergrößern?
Wie kann man das Problem umgehen, außer dass man mehrere Strings nimmt?
Und: Wie groß ist die max. Länge eines Stringes bei Perl?
Danke im voraus!
Gruß Mirwais
Hi,
die max. Stringlaenge haengt IMHO vom freien RAM des Rechners ab. Allerdings sollte eine 200kB-Datei problemlos einzulesen sein. Poste doch mal ein Haeppchen Code, damit man sich ein Bild machen kann, wie Du die Datei einliest!
Viele Gruesse
speedy
Ja Cheahta,
ich lese die datei in einem Skalar ein!
Was ist mit $/ gemeint?
Gruß Mirwais
Hallo Mirwais
Ja Cheahta,
ich lese die datei in einem Skalar ein!
Was ist mit $/ gemeint?
$/ = Input Record Seperator.
Liest Du eine Datei in einen Skalar ein, wird diese bis zu dem Zeichen eingelesen, das in dieser Variablen steht. Voreingestellt ist '\n'.
Mit undef $/ wird die gesamte Datei in den Skalar eingelesen, also:
undef $/;
my $inhalt = <DATEI>
besser ist IMHO aber:
my $inhalt = do {local $/; <DATEI> }
da der alte Wert von $/ beim Verlassen des Blockes wieder hergestellt wird
s. perldoc perlvar
Gruß Mirwais
Gruss
Kai
Hi,
ich lese eine Datei immer in ein Array ein. Sofern noetig, verarbeite ich sie weiter zu einem Skalar. Also:
open (DATEI, "datei.txt");
@datei=<DATEI>;
close DATEI;
foreach $zeile (@datei)
{
chomp $zeile;
$skalar .= $zeile; #oder sowas (brauche ich aber selten)
}
Viele Gruesse
speedy
ich lese eine Datei immer in ein Array ein. Sofern noetig, verarbeite ich sie weiter zu einem Skalar. Also:
Wozu soll das gut sein?
open (DATEI, "datei.txt");
Man sollte *immer* auf Fehler pruefen:
open DATEI, 'datei.txt' or die "datei.txt: $!";
foreach $zeile (@datei)
{
»» chomp $zeile;
»» $skalar .= $zeile; #oder sowas (brauche ich aber selten)
}
Wieso entfernst Du die newlines am Ende der Zeilen? Damit veraenderst Du den Inhalt, ich bin mir nicht sicher, ob man das wirklich immer will.
Die anderen Vorschlaege scheinen mir wesentlich besser zu sein.
Peter
Hi,
Man sollte *immer* auf Fehler pruefen:
open DATEI, 'datei.txt' or die "datei.txt: $!";
ich weis schon, aber ich hatte nicht die Zeit, ein komplettes tolles Perlscript hinzuzaubern :)
Wieso entfernst Du die newlines am Ende der Zeilen? Damit veraenderst Du den Inhalt, ich bin mir nicht sicher, ob man das wirklich immer will.
Natuerlich will man das nicht immer und der Programmierer, der den Code pastet wird Ihn schon so anpassen wie er‚s braucht - dachte ich...
Die anderen Vorschlaege scheinen mir wesentlich besser zu sein.
<g> nobody is perfect!
Viele Gruesse
speedy
Hallo,
Und: Wie groß ist die max. Länge eines Stringes bei Perl?
Der zur Verfügung stehende RAM.
Dei Problem rührt vielleicht daher, daß es sich um eine Binärdatei handelt.
Unter Win32 gibts da Unterschiede, leider.
versuchs mal mit
open(FILEHANDLE, "$filename") or die "nixda mit aufmachen von $dateiname";
binmode(FILEHANDLE);
ist nur so eine Idee.
Grüße
Klaus
Hi,
ich wollte eine Datei, die ca. 200 KB groß ist in einem String einlesen, doch leider merkte ich, daß mein String nur ca. 1/4 der Datei gespeichert hat. Wie kann ich die Stringlänge vergrößern?
was steht denn in $/? Ich nehme an, Du liest in einen Skalar ein. Probier mal
undef $/;
Cheatah