ein Kapitel zurück                                           ein Kapitel weiter

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 zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf