[Gelöst] Aufruf einer Sub - Fehlermeldung

Begonnen von TomLee, 16 März 2018, 15:35:51

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

hab mir gestern eines der drei Beispiel-Sub von hier in meine 99_myUtils.pm geschrieben. Zum testen habe ich die Sub mit {qclock2} aus der Kommandozeile aufgerufen. Die Sonosausgabe wurde ausgegeben, das zeit-Reading des Dummys wurde geschrieben und auch unter der Kommandozeile wurde das Ergebnis angezeigt.

Heut gebe ich {qclock2} in die Kommandozeile ein und erhalte ein:

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


##Ausgabe der Zeit in natürlicher Sprache
##https://forum.fhem.de/index.php/topic,85690.msg780809.html#msg780809

sub qlock2() {
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $Minute = $Minuten;
my $Stunde = $Stunden;
my $spoke = "Es ist $Stunden Uhr $Minuten.";
## 24h in 12h umwandeln
if ($Stunden <= 12) { $Stunde = $Stunden }
if ($Stunden >= 13) { $Stunde = $Stunden - 12 }
if ($Stunden == 0) { $Stunde = 12 }
## Wahlweise West- oder Ost-VAriante. Bitte den jeweils anderen Block auskommentieren!
{
  ## Ost: Zwischen Minute 13 und 17 sowie ab Minute 23 die nächste Stunde ansagen > drei viertel 12 um 11:45 Uhr
  if ((($Minuten >= 13 && $Minuten <= 17) || $Minuten >= 23) && ($Stunde >= 1 && $Stunde <= 11)) { $Stunde = $Stunde + 1 }
  elsif ((($Minuten >= 13 && $Minuten <= 17) || $Minuten >= 23) && $Stunde == 12) { $Stunde = $Stunde - 11 }
}
##{
## West: Ab Minute 23 die nächste Stunde ansagen > viertel vor 12 um 11:45 Uhr
##  if ($Minuten >= 23 && ($Stunde >= 1 && $Stunde <= 11)) { $Stunde = $Stunde + 1 }
##  elsif ($Minuten >= 23 && $Stunde == 12) { $Stunde = $Stunde - 11 }
##}
## Zusammensetzen der gesprochenen Uhrzeit
if ($Minute =~ (/(^0{1})|(5)|(10)|(15)|(20)|(25)|(30)|(35)|(40)|(45)|(50)|(55)|(60)/)) {
my @hourNames=('eins','zwei','drei','vier','fünf','sechs','sieben','acht','neun','zehn','elf','zwölf');
$Stunde=$hourNames[$Stunde-1];
  if ($Minute =~ /(^0{1})|(60)/) {
    $spoke = "Es ist ein Uhr." if ($Stunde eq "eins");
$spoke = "Es ist $Stunde Uhr." if ($Stunde ne "eins");
    }
  elsif ($Minute == 5) {
    $spoke = "Es ist fünf nach $Stunde.";
  }
  elsif ($Minute == 10) {
    $spoke = "Es ist zehn nach $Stunde.";
  }
  elsif ($Minute == 15) {
    ##$spoke = "Es ist viertel nach $Stunde.";
    $spoke = "Es ist viertel $Stunde.";
  }
  elsif ($Minute == 20) {
    $spoke = "Es ist zwanzig nach $Stunde.";
  }
  elsif ($Minute == 25) {
    $spoke = "Es ist fünf vor halb $Stunde.";
  }
  elsif ($Minute == 30) {
    $spoke = "Es ist halb $Stunde.";
  }
  elsif ($Minute == 35) {
    $spoke = "Es ist fünf nach halb $Stunde.";
  }
   elsif ($Minute == 40) {
    $spoke = "Es ist zwanzig vor $Stunde.";
  }
  elsif ($Minute == 45) {
    ##$spoke = "Es ist viertel vor $Stunde.";
    $spoke = "Es ist drei viertel $Stunde.";
  }
  elsif ($Minute == 50) {
    $spoke = "Es ist zehn vor $Stunde.";
  }
  elsif ($Minute == 55) {
    $spoke = "Es ist fünf vor $Stunde.";
  }
}
## Ausgabe der gesprochenen Uhrzeit: "Es ist ..." in ein Reading, oder direkt als Sprachausgabe oder...
fhem "setreading du_Wordclock zeit $spoke";
fhem "set Sonos_Wohnzimmer_PLAY3 speak 40 de $spoke";
return $spoke;
}


Jemand nen Tipp an was das liegen kann ?

Gruß

Thomas

betateilchen

Zu wenige Informationen, um Dir wirklich helfen zu können.

Schau doch mal in die 99_myUtils.pm ob da wirklich das drinsteht, was Du erwartest. Vielleicht hast Du bei einem späteren Bearbeiten der Datei irgendeinen Fehler eingebaut, der das Laden der Datei und der darin enthaltenen Funktionen verhindert.

Von einem Tippfehler bei der Eingabe des Funktionsnamens in der Befehlszeile gehe ich jetzt mal nicht aus ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Sry, war gerade dabei sie hier anzufügen.

Und klar hab ich ein reload gemacht, sogar ein Neustart.

Ich verstehs nicht, Schreibfehler scheidet eigentlich aus, ich habs aus der Liste ausgewählt (was gestern eingegeben wurde)

helmut

Zitat von: betateilchen am 16 März 2018, 15:41:55
Von einem Tippfehler bei der Eingabe des Funktionsnamens in der Befehlszeile gehe ich jetzt mal nicht aus ;)

Oder doch? ;-)

Bareword "qclock2"
sub qlock2() {

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

TomLee

Habs gerade selbst gesehen, ich kanns mir nicht erklären.

Trotzdem Danke

helmut

Denkst Du bitte an an das  [Gelöst] vor dem Subject des ersten Posts?

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)