FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: stefan-dd am 16 Oktober 2021, 21:31:43

Titel: letzte Zeile aus Textdatei auslesen
Beitrag von: stefan-dd am 16 Oktober 2021, 21:31:43
Ich möchte Statusdaten aus einer Datei einlesen. Allerdings will ich nur die letzte Zeile lesen.

test { my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return join(" / ", @content)},

Wie kann man den Programmcode ändern, damit nur die letzte Zeile eingelesen wird?
Titel: Antw:letzte Zeile aus Textdatei auslesen
Beitrag von: TomLee am 16 Oktober 2021, 22:44:18
FileRead liest den Inhalt der Datei zeilenweise in das Array @content, meinem Verständnis nach.

Auf das letzte Element eines Array kann man ganz einfach zugreifen:

Kommondozeile:

{ my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return $content[-1];;}

Passt das so ?
Titel: Antw:letzte Zeile aus Textdatei auslesen
Beitrag von: betateilchen am 16 Oktober 2021, 22:58:57

return pop @content;
Titel: Antw:letzte Zeile aus Textdatei auslesen
Beitrag von: TomLee am 16 Oktober 2021, 23:00:31
{ my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return pop $content;;}

Global symbol "$content" requires explicit package name (did you forget to declare "my $content"?) at (eval 35511) line 1.
Experimental pop on scalar is now forbidden at (eval 35511) line 1, at EOF


{ my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return pop @content;;}

2021.10.16 22:58:08 1: ERROR evaluating { my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"}); return pop $content;}: Global symbol "$content" requires explicit package name (did you forget to declare "my $content"?) at (eval 35511) line 1.
Experimental pop on scalar is now forbidden at (eval 35511) line 1, at EOF


?
Titel: Antw:letzte Zeile aus Textdatei auslesen
Beitrag von: betateilchen am 16 Oktober 2021, 23:06:29
Zitat von: TomLee am 16 Oktober 2021, 23:00:31
?

ZitatERROR evaluating { my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"}); return pop $content;}:

Es muß pop @content heißen...

Die Fehlermeldung

ZitatExperimental pop on scalar is now forbidden

ist doch eigentlich selbsterklärend?
Titel: Antw:letzte Zeile aus Textdatei auslesen
Beitrag von: TomLee am 16 Oktober 2021, 23:17:42
Ja, sry, das hat man von schnell schnell, Danke.

Kommandozeile:
{ my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return pop @content;;}