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?
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 ?
return pop @content;
{ 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
?
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?
Ja, sry, das hat man von schnell schnell, Danke.
Kommandozeile:
{ my ($error, @content) = FileRead({FileName => "/opt/fhem/program.log", ForceType => "file"});; return pop @content;;}