Ich habe folgende Funktion in 99_myUtils.pm geschrieben:
sub
listen_out
{
my $web = "http://xxxx:yyyyyyyy\@192.168.x.xxxxxx:zzzz/FHEM/fhem_listen.php";
my $FW_httpheader;
my $host = $FW_httpheader{Host};
my $quelltext = "";
use LWP::Simple;
$host = substr $host,0,12;
my $ret = '<table class="weather">';
$quelltext = get $web or die "Couldn't get $web";
if ($host ne "192.168.x.xx")
{
$quelltext =~ s/192.168.x.xx/xxxx.dyndns.org/g;
$quelltext =~ s/192.168.x.xy/xxxx.dyndns.org/g;
$quelltext =~ s/192.168.x.xz/xxxx.dyndns.org/g;
$quelltext =~ s/192.168.x.yy/xxxx.dyndns.org/g;
}
if (!$quelltext)
{
$quelltext = $web;
}
$ret = $ret . '<tr><td>' . $quelltext . '</td></tr>';
$ret = $ret . '</table>';
return $ret;
}
Nach shutdown restart erhalte ich immer die Fehlermeldung "Undefined subroutine &main::cam_out called at (eval 406) line 1. " Wenn ich jetzt 99_myUtils.pm einmal lade und ungeändert wieder abspeichere, dann funktionier die Funktion einwandfrei.
Hat irgend jemand eine Idee was das sein könnte?
Oups, die Fehlermeldung bezieht sich auf eine weitere Funktion cam_out, die nach dem gleichen Muster aufgebaut ist. Beide Funktionen produzieren die gleiche Fehlermeldung.
ich habe im Logbuch die folgende Fehlermeldung gefunden:
reload: Error:Modul 99_myUtils deactivated:
Global symbol "%FW_httpheader" requires explicit package name at ./FHEM/99_myUtils.pm line 4027, <$fh> line 6.
BEGIN not safe after errors--compilation aborted at ./FHEM/99_myUtils.pm line 4042, <$fh> line 6.
Beim Googlen habe ich herausbekommen, dass eine solche Meldung kommt, wenn eine Variable nicht definiert ist. Aber $FW_httpheader ist doch global definiert???
die variable ist zwar global, aber erst dann bekannt wenn das modul das sie einführt sie das erste mal verwendet hat. also nach dem fhemweb geladen ist und die erste seite ausgeliefert hat. wenn du sie vorher verwendest gibt es einen fehler.
du kannst sie am anfang deines moduls mit use vars qw(%FW_httpheader);
machen. dann passt alles.
gruss
andre
Hallo Andre,
ich habe das wahlweise am Anfang von 99_myUtils und am Anfang der Funktion gesetzt. Beides bringt keinen Erfolg. Das Verhalten bleibt identisch.
sorry. hatte die falsche zeile kopiert. ist oben korrigiert.
es gibt ein FW_httpheader array und ein FW_httpheader hash. du musst das deklarieren das du auch verwendest.
gruss
andre
OK funzt ! Freu !
Ich denke, es wird noch eine Zeitlang dauern, bis ich mit Perl und FHEM mal so einigermaßen auf Du bin. Glücklicherweise gibt es ja dieses Forum. Ich danke Dir jedenfalls erst mal recht herzlich.