FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kharim am 13 März 2016, 17:14:46

Titel: Problem mit $mday
Beitrag von: Kharim am 13 März 2016, 17:14:46
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
Titel: Antw:Problem mit $mday
Beitrag von: Ellert am 13 März 2016, 18:13:32
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
Titel: Antw:Problem mit $mday
Beitrag von: Kharim am 13 März 2016, 18:33:39
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
Titel: Antw:Problem mit $mday
Beitrag von: franky08 am 13 März 2016, 18:39:25
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
Titel: Antw:Problem mit $mday
Beitrag von: betateilchen am 13 März 2016, 19:01:31
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);
Titel: Antw:Problem mit $mday
Beitrag von: Kharim am 13 März 2016, 20:50:38
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