|
![ein Kapitel weiter](../weiter.gif)
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 weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|