Parameter an sub übergeben - welche Methode ist zukunftssicher?

Begonnen von fiedel, 28 Juni 2015, 11:19:48

Vorheriges Thema - Nächstes Thema

fiedel

Hallo,

zur Parameterübergabe an eine sub in der myUtils habe ich bisher 2 Varianten kennen gelernt:

Hier mal zwei Beispiele dazu:
sub Balken($$$$$$) {
my ($name, $max, $height, $width, $color1, $color2) = @_;


sub exmail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];


Ich würde gern wissen, welches der Verfahren am zukunftssichersten, oder empfehlenswertesten ist. Oder gibt es weitere Verfahren, die noch empfehlenswerter sind?

Gruß

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Elektrolurch

Variante 1 ist die Zuweisung einer Liste auf eine Liste, Variante 2 die Zuweisung der einzelnen Komponenten einer Liste (sind Skalare) auf Skalare.
Die Schreibweise ist aufwendiger und birgt mehr Tippfehler.

Elektrolurch
configDB und Windows befreite Zone!

justme1968

ich glaube du schmeißt gerade zwei dinge durcheinander.

zum einen die funktions definition mit der deklaration der übergabe parameter.

hier ist die variante mit parameter angabe die moderne und gegen fehler sicherer.

und zum anderen die zuweisung der übergabe parameter an lokale variablen. das kann man auf jede art und weise machen die perl bietet (und da gibt es noch ein paar mehr die sich jeweils mit oder ohne deklaration verwenden lassen) oder auch ganz lassen. ich würde sagen die erste version ist am übersichtlichsten und am wenigsten fehler anfällig.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

fiedel

Super, danke euch beiden! Werde also demnächst nur noch Dollarzeichen in den Augen haben...  ;D
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423