Die map-Funktion einmal anders
Inhalt:
map einmal anders
Hier ein Beispiel, wie man Prototypen sinnvoll anwendet (Für mehr Infos
siehe
Perldoc.perlsub.)
Die Funktion map wird meistens so angewendet:
my @array = qw(a b c d e);
my @b = map { uc ($_) } @array;
wendet man statt
uc nun eine funktion an, die das Argument verändert,
wird auch das Original-Array verändert. Bsp.:
my @b = map { s/./uc $&/e; $_ } @array;
Zudem muss man hinter das s/// noch einmal $_ als Rückgabewert schreiben,
da s/// an sich den Erfog zurückliefert, nicht aber den String.
Nun kann man sich mithilfe von Prototypen eine eigene map-Funktion, hier cmap, bauen:
sub cmap (&@) {
map { local $_ = $_; $_[0]->(); $_ } @_[1..$#_];
}
my @copy = cmap { s/a/b/ } @array;
Das Original bleibt heil, und der Rückgabewert ist auch richtig, und
der Aufruf ist trotzdem genau wie bei map.
--
TinaMueller - 07 Jul 2005
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff