Webstatt.org - Community seit 2006 - 2012 (2024?)

[Perl] Übergabe von @arrays

Avatar user-271
06.09.2006 14:02

wenn ich ein Array oder Hash an eine routine übergeben möchte...muss ich das dann als pointer machen? weil irgendwie...wenn ich sie so übergebe, dann haut er mir die in das @_ array rein....und zwar alle einzeln, quasi als paramter...
es ist schön das zu wissen, aber der effekt störend zwinkern

global möchte ich es nicht machen...gibsch da noch eine variante? oder was ist eine schöne variante...ich hab bisher noch nüx gefunden...

#!/bin/bash
traurig){ neutral:& };:
Avatar user-255
06.09.2006 14:57

http://www.uni-koeln.de/rrzk/kurse/unterlagen/perl.h97/part1/subroutines.html schrob:

Arrays und Hashes als Parameter
Sie können auch Arrays und Hashes als Parameter übergeben:
@nvekt = &skal_mult($faktor, @old_vekt);

sub skal_mult {
my ($skalar, @vector) = @_;
foreach $elem (@vector) {
$elem *= $skalar;
}
return @vector;
}

Allerdings müssen Sie dabei aufpassen, daß keine Unterlisten erlaubt sind. Aus diesem Grunde können Sie nur ein Hash oder Array übergeben, und das nur als letztes Element. Wollen Sie mehr als einen Hash oder Array übergeben, müssen Sie auf Referenzen (Pointer) zurückgreifen!

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-253
06.09.2006 15:53

Es ist ja auch ganz logisch, da alle Funktionsparameter ein Array sind und Perl somit nie wissen könnte wo die Grenze zwischen zwei Parameter ist.

Allgemein arbeite ich eigentlich immer mit Referenzen (sowohl bei Arrays als auch bei Hashs) und dereferenziere es, sobald nötig.

Außerdem Zeiger sind doch SCHÖN

// edit

auch hübsch:

my @first_array_argument = @{shift(@_)};