Konstruktionsablauf III

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Logger.pm
sub new {
   my ($package, %options) = @_;
   my $defaults = $package->defaults;
   my $self = bless {
      map {
         $_ => 
         defined $options{$_}? $options{$_}: $defaults->{$_}
      } keys %{$defaults},
   }, $package;
   my $default_level = $options{default_level};
   if (defined $default_level) {
      $self->{default_level} = $default_level;
   } else {
      $self->{default_level} = LOG_INFO;
   }
   $self->initialize(%options);
   return $self;
}
Logger::Logfile.pm
sub initialize {
   my ($self, %options) = @_;
   unless (ref($self->{file})) {
      my $out = new IO::File $self->{file},
            $self->{modes}, $self->{protection}
         or croak "unable to open $self->{file}: $!";
      $self->{file} = $out;
   }
}
sub defaults {
   return { modes => O_WRONLY|O_CREAT|O_APPEND,
            file => \*STDERR, protection => 0666 };
}

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003