FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Loredo am 06 April 2014, 23:38:45

Titel: IsInt() in 99_Utils.pm
Beitrag von: Loredo am 06 April 2014, 23:38:45
Hallo Rudi,

ich schlage vor, folgende kleine Routine mit in 99_Utils aufzunehmen:



sub IsInt {
    defined $_[0] && $_[0] =~ /^[+-]?\d+$/;
}


Damit kann man dann in seinem Perl-Code sehr einfach prüfen, ob eine Variable ein Zahlenwert ist oder nicht.


Gruß
Julian
Titel: Antw:IsInt() in 99_Utils.pm
Beitrag von: rudolfkoenig am 07 April 2014, 07:49:10
Kann ich gerne aufnehmen, ich wuesste aber gerne, wozu das gut ist.
Titel: Antw:IsInt() in 99_Utils.pm
Beitrag von: betateilchen am 07 April 2014, 08:55:12
return 1 if($_[0]=~ y/0-9// == length($_[0]));

Ist aus Perfomancesicht sehr viel schneller.

Aber ob man das wirklich in den 99_Utils braucht? Ich weiss nicht.
Titel: Antw:IsInt() in 99_Utils.pm
Beitrag von: Loredo am 07 April 2014, 16:46:55
Zitat von: rudolfkoenig am 07 April 2014, 07:49:10
Kann ich gerne aufnehmen, ich wuesste aber gerne, wozu das gut ist.


Ich prüfe damit in Modulen Benutzereingaben ab, ob diese tatsächlich einer Zahl entsprechen, bevor ich damit rechne.
Ich dachte mir, das nutzt sicherlich auch der ein oder andere in seiner MyUtils.pm oder in Modulen. Daher mein Vorschlag.
Titel: Antw:IsInt() in 99_Utils.pm
Beitrag von: rudolfkoenig am 08 April 2014, 13:38:51
@Loredo: Ich halte es zwar nicht fuer weltbewegend, aber habs eingecheckt da es kurz ist, und vermutlich niemanden stoert.
@betateilchen: Hast du Zahlen dafuer, dass deine Version schneller ist? Da sie negative Werte ignoriert, habe ich Loredos Variante eingecheckt.
Titel: Antw:IsInt() in 99_Utils.pm
Beitrag von: betateilchen am 08 April 2014, 15:17:23
Zitat von: rudolfkoenig am 08 April 2014, 13:38:51
@betateilchen: Hast du Zahlen dafuer, dass deine Version schneller ist?

http://www.perl-community.de/bat/poard/message/133503