99_myutils wie muss ich es schreiben

Begonnen von jostmario, 08 November 2018, 18:52:44

Vorheriges Thema - Nächstes Thema

jostmario

Hallo

würde das gern immer ausführen auser bei 000 und  005 als Wert.
Wie füge ich hier noch das oder 005 ein ?

sub CalcDauer_h(@)
{
my ($Laufzeit_h,$Status) = @{shift()}; 
my $Dauer_h;  unless ($Status eq "000") {$Dauer_h = $Laufzeit_h; }  return $Dauer_h; }

sub CalcDauer_m(@)
{
my ($Laufzeit_m,$Status) = @{shift()};  my $Dauer_m;  unless ($Status eq "000") {$Dauer_m = $Laufzeit_m; }  return $Dauer_m; }


sub CalcDauer_min(@)
{
my ($Dauer_min,$Status) = @{shift()};  my $Laufzeit;  unless ($Status eq "000") {$Dauer_min = $Laufzeit; }  return $Dauer_min; }


Gruß Josty
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

JoWiemann

($Status eq "000" || $Status eq "005")


Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

jostmario

Hallo,

Dankeschön hatte es so versucht ging aber irgendwie nicht.
sub CalcDauer_h(@)
{
my ($Laufzeit_h,$Status) = @{shift()};  my $Dauer_h;  unless ($Status eq "000") {$Dauer_h = $Laufzeit_h; }  return $Dauer_h; }

sub CalcDauer_m(@)
{
my ($Laufzeit_m,$Status) = @{shift()};  my $Dauer_m;  unless ($Status eq "000") {$Dauer_m = $Laufzeit_m; }  return $Dauer_m; }


Gruß Josty
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jostmario

Hallo,

was ist der unterschied zu     my ($Laufzeit_h,$Status) = @{shift()};

Gruß Josty
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

betateilchen

Perfomance...

@_ ist ein ohnehin vorhandenes array, aus dem die Werte einfach gelesen werden können,
@{shift()} konstruiert erst ein zusätzliches array, das dann verwendet wird.

Außerdem ist @_ leichter lesbar und schneller einzutippen :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Der Unterschied ist, dass die Version von betateilchen eine Chance hat, zu funktionieren...

Probier mal einfach selbst, z.B. auf https://www.tutorialspoint.com/execute_perl_online.php

sub CalcDauer_h(@)
{
my ($Laufzeit_h,$Status) = @_;
my $Dauer_h;  unless ($Status eq "000") {$Dauer_h = $Laufzeit_h; }  return $Dauer_h; }

print CalcDauer_h(10,"005");
ergibt 10

sub CalcDauer_h(@)
{
my ($Laufzeit_h,$Status) = @{shift()};
my $Dauer_h;  unless ($Status eq "000") {$Dauer_h = $Laufzeit_h; }  return $Dauer_h; }

print CalcDauer_h(10,"005");
ergibt nichts

UNd letztendlich
sub CalcDauer_h(@)
{
my ($Laufzeit_h,$Status) = @_;
my $Dauer_h;  unless ($Status eq "000" || $Status eq "005") {$Dauer_h = $Laufzeit_h; }  return $Dauer_h; }

print "\nMit 000: ".CalcDauer_h(10,"000");
print "\nMit 005: ".CalcDauer_h(10,"005");
print "\nMit 007: ".CalcDauer_h(10,"007");
print "\nMit 010: ".CalcDauer_h(10,"010");

ergibt
Mit 000:
Mit 005:
Mit 007: 10
Mit 010: 10




Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

jostmario

Hallo amenomade,

Dank dir haste gut erklärt.
jetzt verstehe ich was er da macht denke bekomme es jetzt hin.
werd es die woche mal umbasteln versuchen.

Gruß Josty
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611