|
![ein Kapitel weiter](../weiter.gif)
Um einen Filehandle aus einer Funktion zurückzugeben müssen wir
einen Wrapper schreiben. Ein Wrapper ist ein Strumpf den man der
Hauptfunktion überzieht. Ich will Ihnen zeigen wie sie dies
in Perl bewerkstelligen können......
#!/usr/bin/perl -w
sub Open{
my $pfad=$_[0];
local *FH;
open(FH, $pfad) or die $!;
return *FH;
}
*FH_READ=Open("/usr/include/stdio.h");
while(<FH_READ>){
print;
}
Ich benutze als Wrapper-Funktion immer den selben Namen. Nur den Anfangsbuchstaben
schreibe ich gross, um Ihn von der echten Funktion zu unterscheiden
(a la Richard W. Stevens).
Wofür steht das Sternchen am Anfang unseres Filehandle. Testen sie am besten
folgendes Beispiel.......
#!/usr/bin/perl -w
*var1=5;
*var2="hallo";
print *var1 , ":" , *var2 , "\n";
Anhand diese Programms dürfte Ihnen nun schon einiges klar sein. Das
Sternchen ist nicht speziell für Filehandles reserviert sondern kann
bei allen möglichen Variablen verwendet werden. Also kann man sich
das Sternchen als ein Art Wildcard für eine Variable nehmen, die
sowphl für $,@ und % steht. Aber auch für eine Filehandle, der kein
Präfix normalerweise besitzt.
Man kann es sich aber einfacher merken wenn man sagt, das Sternchen
ist das Präfix für einen Filehandle, auch wenn es nicht ganz richtig ist.
Bei der Übergabe als Funktionsparameter funktioniert das ganze ähnlich.....
#!/usr/bin/perl -w
sub Read{
local *FH=shift;
while(<FH>){print;}
}
open(FH_READ,"/usr/include/stdio.h") or die $!;
Read(*FH_READ);
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|