Autor Thema: Problem mit Perl split() in 99_myUtils  (Gelesen 165 mal)

Offline dt2510

  • Full Member
  • ***
  • Beiträge: 422
Problem mit Perl split() in 99_myUtils
« am: 08 Juli 2018, 20:37:33 »
Ich versuche gerade eine Zeichenkette an einem "." zu splitten und habe folgenden Befehl verwandt

$myPower enthält "367.0"

my @myArray2 = split(".",$myPower);
Log(3,$myArray2[0]);

Im Logfile wird eine Leerzeile geloggt und daraufhin bekomme ich die Meldung

PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at fhem.pl line 950, <FH> line 3767.
Wie kann ich an einem "." trennen ohne dass Perl von einer Stringverkettung ausgeht ?
« Letzte Änderung: 08 Juli 2018, 20:44:58 von dt2510 »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 9660
    • Otto's Technik Blog
Antw:Problem mit Perl split() in 99_myUtils
« Antwort #1 am: 08 Juli 2018, 21:06:30 »
Mein Test in der FHEM Kommandozeile:
{my $a = "367.0";;my @wp = split /\./,$a;;return @wp[0]}Liefert 367 :)
Gruß Otto
« Letzte Änderung: 08 Juli 2018, 21:08:42 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14779
  • s/fhem\.cfg/configDB/g
Antw:Problem mit Perl split() in 99_myUtils
« Antwort #2 am: 08 Juli 2018, 21:12:44 »
zwei Fehler in einem einzigen Funktionsaufruf, das ist cool :)

  • der Punkt muss maskiert werden, da er in regexp eine spezielle Funktion hat
  • doppelte Anführungszeichen dürfen nicht im split Operator verwendet werden, weil doppelte Anführungszeichen eine spezielle Funktion haben

Einen Lösungansatz hat Otto schon gepostet, wenn es mit Anführungszeichen sein soll, sieht das so aus:

split('\.',$myPower)
Und wenn es wirklich nur darum geht, den ganzzahligen Anteil zu bekommen, geht das auch ganz ohne split.

int($myPower)
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 07.09.2018 - 18:30 Uhr

Offline dt2510

  • Full Member
  • ***
  • Beiträge: 422
Antw:Problem mit Perl split() in 99_myUtils
« Antwort #3 am: 08 Juli 2018, 21:49:51 »
Ah ja !!! Das hilft mir weiter 😊
Ich hab - von Delphi/Pascal kommend - immer noch Probleme mit den Perl Eigenheiten und RegEx meide ich wo es geht, weil ich immer noch nicht durchsteige.
Dann gibt es ja mit Sicherheit auch eine Funktion, das erste "Wort" eines Strings zu ermitteln ohne gleich splitten zu müssen oder ?

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 14779
  • s/fhem\.cfg/configDB/g
Antw:Problem mit Perl split() in 99_myUtils
« Antwort #4 am: 08 Juli 2018, 22:17:42 »
aber split() nutzt doch auch nur regexp...

my $text = "Das ist ein String";
$text =~ /^(\S+)/;
return $1;
« Letzte Änderung: 08 Juli 2018, 22:33:12 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 07.09.2018 - 18:30 Uhr

Offline dt2510

  • Full Member
  • ***
  • Beiträge: 422
Antw:Problem mit Perl split() in 99_myUtils
« Antwort #5 am: 09 Juli 2018, 08:49:24 »
aber split() nutzt doch auch nur regexp...

weshalb waren wohl 2 Fehler in einem Aufruf ;) ?

 

decade-submarginal