FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: darkon am 07 Februar 2017, 20:44:24

Titel: Schwierigkeiten bei der Perl Programmierung
Beitrag von: darkon am 07 Februar 2017, 20:44:24
Guten Abend,

möchte in meiner my_Utils folgenden Befehl ausführen:

my $eventDate = ReadingsVal($device,"t_00$j_bdate",0);

Das "t_00$j_bdate" soll wie folgt interpretiert werden: t_001_bdate

Also in $j steht die die 1.

Ist dieses so korrekt?
Titel: Antw:Schwierigkeiten bei der Perl Programmierung
Beitrag von: Thorsten Pferdekaemper am 07 Februar 2017, 20:49:56
Zitat von: darkon am 07 Februar 2017, 20:44:24Ist dieses so korrekt?
Probier's doch einfach aus!
Gruß,
   Thorsten
Titel: Antw:Schwierigkeiten bei der Perl Programmierung
Beitrag von: darkon am 07 Februar 2017, 20:54:56
Ich erhalte die Fehlermeldung:

Bareword "Termine_Dominik" not allowed while "strict subs" in use at (eval 253101) line 1.

Mein kompletter Code sieht wie folgt aus:

sub
Kalender_Tage($)
{
   my($device)=@_;
   my $t  = time;
   my $dayDiff;
 
   for(my $i=0; $i<10; $i++)
   {
      $dayDiff = -1; #BUG behoben
      my $j=$i+1;
       
         my $eventDate = ReadingsVal($device,"t_00$j_bdate",0);
         my $dayDiffNeu = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
         if ($dayDiffNeu >= 0 && ($dayDiffNeu < $dayDiff || $dayDiff == -1)) #BUG behoben
         {
            $dayDiff = $dayDiffNeu;
         }
       
      fhem("setreading $device t_00$j_time $dayDiff");
   }
}
Titel: Antw:Schwierigkeiten bei der Perl Programmierung
Beitrag von: Thorsten Pferdekaemper am 07 Februar 2017, 20:57:08
Zitat von: darkon am 07 Februar 2017, 20:54:56
Bareword "Termine_Dominik" not allowed while "strict subs" in use at (eval 253101) line 1.
Das hat aber nichts mit dem gezeigten Code zu tun.
Gruß,
   Thorsten
Titel: Antw:Schwierigkeiten bei der Perl Programmierung
Beitrag von: DeeSPe am 08 Februar 2017, 11:10:53
Zitat von: darkon am 07 Februar 2017, 20:44:24
Guten Abend,

möchte in meiner my_Utils folgenden Befehl ausführen:

my $eventDate = ReadingsVal($device,"t_00$j_bdate",0);

Das "t_00$j_bdate" soll wie folgt interpretiert werden: t_001_bdate

Also in $j steht die die 1.

Ist dieses so korrekt?

So nimmt Perl an dass "$j_bdate" die komplette Variable ist.

Richtig so:
my $eventDate = ReadingsVal($device,"t_00".$j."_bdate",0);

Gruß
Dan