Alexander Foken: String aus Datei einlesen und verwenden können

Beitrag lesen

Halihallo Sven

open (FH, "< forum/IDforum.txt");
$kennung = <FH>; chomp $kennung;
close FH;

das müsste so aussehen:
open(FH, '<./forum/IDforum.txt') or die 'cannot open IDforum.txt';
($kennung) = <FH>; chomp $kennung;
close FH;

Beachte: <FH> gibt ein Array zurück, nicht ein String. Benutzt du <FH> skalar, wird die _Länge_ des Arrays (also Anzahl Zeilen in der Datei) zurückgeliefert.

Leider falsch!

Nur weil <FH> im Array-Kontext ein Array zurückliefert, muß es im Scalar-Kontext nicht die Länge des Arrays liefern. Es liefert die nächste Zeile zurück, oder undef bei Fehlern wie EOF.

Oder, als RTFM formuliert:

perldoc perlop

Unter I/O Operators findet sich folgende Erklärung:

In scalar context, evaluating a filehandle in angle brackets yields the next line from that file (the newline, if any, included), or undef at end-of-file or on error. When $/ is set to undef (sometimes known as file-slurp mode) and the file is empty, it returns '' the first time, followed by undef subsequently.

Alexander

Viele Grüsse

Philipp