FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jostmario am 08 November 2018, 18:52:44

Titel: 99_myutils wie muss ich es schreiben
Beitrag von: jostmario am 08 November 2018, 18:52:44
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
Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: JoWiemann am 08 November 2018, 19:43:25
($Status eq "000" || $Status eq "005")


Grüße Jörg
Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: jostmario am 08 November 2018, 20:05:04
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
Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: betateilchen am 08 November 2018, 20:13:00

my ($Laufzeit_h,$Status) = @_;

Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: jostmario am 08 November 2018, 20:22:59
Hallo,

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

Gruß Josty
Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: betateilchen am 08 November 2018, 20:44:39
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 :)
Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: amenomade am 08 November 2018, 20:48:31
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




Titel: Antw:99_myutils wie muss ich es schreiben
Beitrag von: jostmario am 09 November 2018, 14:43:54
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