[Dresden-pm] Destruktoren

Torsten Werner email at twerner42.de
Don Jul 24 14:40:49 CDT 2003


Hallo Leute,


mal eine Frage: Arbeiten in perl die Destruktoren etwa so wie in C++?
Ein Beispiel:

   sub read_files (@) {
      use IO::File;
      my @result;
      for(@_) {
	 my $handle = new IO::File $_ or next;
	 push @result, $handle->getlines;
      }
      return @result;
   }

Kann ich davon ausgehen, dass am Ende der Funktion alle Dateien wieder
ordentlich geschlossen wurden? Das ganze ist übrigens eine nette
Variante des <>-Konstrukts und geht natürlich auch nur mit einer Datei:

   my @fstab = read_files '/etc/fstab';
   my ($root_disk) = map { m{(^/dev/[hs]d[a-z])\d\s+/\s+} } @fstab;
   print $root_disk;

Im Gegensatz zu <> kann man die Dateien beliebig oft im Programm ändern:

   print read_files glob '*.pl';

und das geht natürlich auch mit Kommandos:

   print read_files qw(pwd| hostname| w| ls|);


Torsten

-- 
Torsten Werner                                          +49 162 3123004
email at twerner42.de                              http://www.twerner42.de