Hallo Zusammen,
wahrscheinlich stehe ich mal wieder total auf dem Schlauch ::) ::) ::)
ich möchte innerhalb einer Funktion in meiner 99_myUtils.pm eine Abfrage (if($mday==1)) durchführen.
Beim Speichern der .pm bekomme ich folgende Meldung:
"Global symbol "$mday" requires explicit package name at ./FHEM/99_myUtils.pm line 34."
Ich kann mich entsinnen, $mday in anderen FHEM Installationen schon innerhalb von Notifys genutzt zu haben - ohne Probleme.
Aber wenn ich es recht bedenke, befinde ich mich hier mit der 99_myUtils und den Funktionen direkt auf Perl-Ebene?
Muss ich hier etwas anders/Besonderes machen um $mday nutzen zu können?
Danke,
Kharim
Aus der Commandref:
Zitatfür die Verwendung in PERL-"oneliners" eingeführt
Daher musst Du Dir $mday selber machen, s. http://perldoc.perl.org/functions/localtime.html
Sorry, was genau muss ich machen?
Wenn ich " ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);" eintrage, wird die Fehlermeldung noch schlimmer;
Global symbol "$sec" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$min" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$hour" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$mday" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$mon" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$year" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$wday" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$yday" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$isdst" requires explicit package name at ./FHEM/99_myUtils.pm line 25. Global symbol "$mday" requires explicit package name at ./FHEM/99_myUtils.pm line 35.
Füge ich nun noch: " use Time::localtime;" ein ist mein gesamtes FHEM nicht mehr ereichbar :o :o :o :o
Danke,
Kharim
Hier mal ein Beispiel aus einer sub von mir, daraus solltest du den Code für deine Anwendung ableiten können:
sub datumdummy()
{
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my $datum_2 = sprintf("%s %2d. %s% 04d",
$Wochentage[$Wochentag],
$Monatstag,
$Monatsnamen[$Monat-1],
$Jahr,
);
fhem "setreading datum_dummy state $datum_2";
#return ($datum_2);
}
VG
Frank
Zitat von: Kharim am 13 März 2016, 18:33:39
Wenn ich " ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);" eintrage, wird die Fehlermeldung noch schlimmer;
Syntaxfehler... probier mal
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Zitat von: betateilchen am 13 März 2016, 19:01:31
Syntaxfehler... probier mal
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Man mag über BETA Software sagen was auch immer mal will,
aber was so ein betaTEILCHEN macht, das funktioniert auch eben!!
Dank Dir!!
Kharim