ein Kapitel zurück                                           ein Kapitel weiter

Wenn sie nun eine kontexintesive Funktion schreiben wollen ist auch dies in Perl kein Problem. Mit der Funktion wantarray() können sie überprüfen ob Ihre Funktion im Listenkontex aufgerufen wurde (true) oder im skalaren Kontex (false). Dabei gehen sie wie folgt vor.......

sub func{
   if(wantarray){
     #Rückgabewert ist @array
     }
   else{
     #Rückgabewert $skalar
     }
}


Und so sieht eine Kontexintesive Funktion in der Praxis aus....

#!/usr/bin/perl -w

sub kontex{
   if(wantarray){
     my @add = @_;
     my $tmp;

     foreach $add(@add){
       $add=$tmp+=$add;
       }
     return @add;
     }
   else{
     my($tmp, $add);
     foreach $add(@_){
       $tmp+=$add;
       }
     return $tmp;
   }
}

@liste = (1..10);

$tot = kontex(@liste);
print $tot , "\n";

@res = kontex(@liste);
print "@res\n"


ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf