FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Tommy82 am 23 November 2016, 20:26:36

Titel: [Gelöst]apptime Warnungen im Log
Beitrag von: Tommy82 am 23 November 2016, 20:26:36
Hallo,
hab heute seit langem nochmal apptime verwendet und bekomme dazu folgende Meldungen im Log:

2016.11.23 19:59:56.081 1: PERL WARNING: Subroutine HandleTimeout redefined at ./FHEM/98_apptime.pm line 24.
2016.11.23 19:59:56.085 1: PERL WARNING: Subroutine CallFn redefined at ./FHEM/98_apptime.pm line 58.


2016.11.23 20:16:34.771 1: PERL WARNING: Use of uninitialized value in join or string at ./FHEM/98_apptime.pm line 150.

Wo liegt das Problem?

Danke
Titel: Antw:apptime Warnungen im Log
Beitrag von: CoolTux am 23 November 2016, 21:05:16
Die obersten 2 sind voll ok. Heißt nur das er die Subs bei eingelesen hat.
Bei der untersten ist eine nicht definierte Variable wo ein Wert Versucht wird ein zu lesen
Titel: Antw:apptime Warnungen im Log
Beitrag von: Tommy82 am 23 November 2016, 21:23:50
Heißt, ich könnte über stacktrace versuchen das Problem rauszufinden!?
Titel: Antw:apptime Warnungen im Log
Beitrag von: CoolTux am 23 November 2016, 21:54:01
Brauchst du nicht. Zeile 150 in apptime gibt es wohl ein join

Tippen auf

my $bla = join(blabla

oder so. Melde es dem Entwickler und gut ist.
Titel: Antw:apptime Warnungen im Log
Beitrag von: martinp876 am 03 Dezember 2016, 20:40:27
sollte behoben sein. Wenn nicht melde dich noch einmal
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: PatrickR am 20 Februar 2017, 20:46:15
Mahlzeit!

Das Problem ist leider noch aktuell:


2017.02.20 20:43:56.415 1: PERL WARNING: Use of uninitialized value in join or string at ./FHEM/98_apptime.pm line 150.
2017.02.20 20:43:56.415 1: stacktrace:
2017.02.20 20:43:56.415 1:     main::__ANON__                      called by ./FHEM/98_apptime.pm (150)
2017.02.20 20:43:56.415 1:     main::apptime_CommandDispTiming     called by fhem.pl (1107)
2017.02.20 20:43:56.415 1:     main::AnalyzeCommand                called by fhem.pl (976)
2017.02.20 20:43:56.415 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2417)
2017.02.20 20:43:56.415 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (873)
2017.02.20 20:43:56.415 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (523)
2017.02.20 20:43:56.415 1:     main::FW_Read                       called by ./FHEM/98_apptime.pm (104)
2017.02.20 20:43:56.415 1:     main::apptime_getTiming             called by ./FHEM/98_apptime.pm (74)
2017.02.20 20:43:56.415 1:     main::CallFn                        called by fhem.pl (674)



# grep Id 98_apptime.pm
# $Id: 98_apptime.pm 12820 2016-12-18 15:22:37Z martinp876 $

Mal ins Blaue geschossen: Ist vielleicht ein Listenelement undef?

Patrick
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: CoolTux am 20 Februar 2017, 21:03:50
Hallo Martin,

Vielleicht geht es so besser

144  +++ if (defined($h->{mAr}) && scalar(@{$h->{mAr}}) > 0){


Ist von Hand geschieben und ungetestet. Kannst Du das bitte einmal testen.


Grüße
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: PatrickR am 20 Februar 2017, 21:15:20
Habe bei mir mal wie folgt geändert:
$arg = join ("; ", map { $_ // "(undef)" } @{$h->{mAr}});

Ich werde berichten.

Patrick
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: CoolTux am 20 Februar 2017, 21:18:17
Was ich nicht verstehe aber auch nicht nachverfolgt habe ist, das in Zeile 144 ja schon geprüft wird ob die Liste einen Inhalt hat.
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: PatrickR am 20 Februar 2017, 22:04:43
Guten Abend!

Zitat von: CoolTux am 20 Februar 2017, 21:18:17
Was ich nicht verstehe aber auch nicht nachverfolgt habe ist, das in Zeile 144 ja schon geprüft wird ob die Liste einen Inhalt hat.

Ich fürchte, der Check in 144 ist bereits vollständig, da $variable im Kontext von if (unter anderem) dann falsch wird, wenn $variable undef ist. Genauso wird scalar(@array) falsch wenn @array keine Elemente enthält. D. h. Martins Variante prüft sogar mehr als Deine.

Zitat
Truth and Falsehood
The number 0, the strings '0' and "" , the empty list () , and undef are all false in a boolean context. All other values are true. Negation of a true value by ! or not returns a special false value. When evaluated as a string it is treated as "" , but as a number, it is treated as 0. Most Perl operators that return true or false behave this way.
(http://perldoc.perl.org/perlsyn.html#Truth-and-Falsehood).

Patrick
Titel: Antw:[Gelöst]apptime Warnungen im Log
Beitrag von: PatrickR am 25 Februar 2017, 21:44:55
Habe mal ein kleines Päckchen geschnürt: https://forum.fhem.de/index.php/topic,67909.0.html

Patrick