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

UtilFaqSubForm edit

Titel Die map-Funktion einmal anders
Autor TinaMueller
Bereich FaqSubroutinen
Topic revision: 2005-07-14, TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.