ein Kapitel zurück                                           ein Kapitel weiter

Im Kaptitel zuvor erwähnte ich ja bereits das wir schon ständig mit irgendwelchen Funktionen wie print gearbeitet haben. Wenn wir uns nun die Schreibweise der Funktionen ansehen können wir erkennen das die meisten Funktionen mit einem Parameter eingesetzt werden. Beispiel.....

print "Ich bin der Parameter von print\n";   


Wollen wir uns doch mal anschauen wie wir dies in Perl bewerkstelligen können....

#!/usr/bin/perl -w

sub lese_einen_wert       #Beginn der Funktion lese_einen_wert
 {
   print "Sie haben folgendes eingegeben : " . $var . "\n";
 }  #Ende

$var=0;

print "Bitte machen sie eine Eingabe : ";
chomp ($var=<STDIN>);

lese_einen_wert();     #Funktionsaufruf


Ein weiteres Beispiel mit einem Array.......

#!/usr/bin/perl -w

sub gib_sortiert_aus       #Beginn
 {
  foreach (sort{$a <=> $b} @werte)
    {
      print $_ , "\t";
    }
  print "\n";
 }  #Ende

@werte = (2,9,12,43,2,3,1);

gib_sortiert_aus();


Das sieht doch schon gut aus oder. Aber was machen wir jetzt wenn wir das Array........

@mehr_werte=(4,66,33,64,34,6,3,65);


....auch noch sortiert ausgeben wollen? Programmiererfahrene wissen es natürlich. Wir rufen die Funktion mit einem Parameter auf......

gib_sortiert_aus(@werte);
gib_sortiert_aus(@mehr_texte);


Nun benötigen wir nur noch das Wissen wie wir mit den Funktionen diese Parameter empfangen und bearbeiten können. Hierzu gibt es wieder eine weitere Standardvariable nämlich @_
Wenn also eine Funktion aufgerufen wird übernimmt Perl diese Argumente in der Standardvariable @_ und diese steht dann der Funktion zur Verfügung. Das wollen wir jetzt mal in der Praxis sehn....

#!/usr/bin/perl -w

sub gib_sortiert_aus          #Beginn
 {
  foreach (sort{$a <==> $b} @_)
   {
      print $_ , "\t";
   }
  print "\n";
 }  #Ende

@werte = (2,9,12,43,2,3,1);
@mehr_werte=(4,66,33,64,34,6,3,65);

gib_sortiert_aus(@werte);
gib_sortiert_aus(@mehr_werte);


Was haben wir geändert? Richtig die Standardvariable @_
In dieser stehen jetzt bei jedem Funktionsaufruf die einzelnen Argumente die der entsprechende Parameter hat. Dazu noch ein weiteres Beispiel.....

#!/usr/bin/perl -w

sub verdopple  #Beginn
 {
   @temp= map {$_* 2} @_ ;
   print "@temp\n";
 } #Ende

@temp=0;
@werte = (2,9,12,43,2,3,1);
@mehr_werte=(4,66,33,64,34,6,3,65);
$skalare=100;

verdopple(@werte);
verdopple(@mehr_werte);
verdopple($skalare);     #So gehts auch


Bei diesem Beispiel verdoppeln wir unseren Wert der einzelnen Argumente die wir als Parameter an der Funktion übergeben.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf