#! /usr/bin/perl use strict; use warnings; # vom paket "main" in das Paket "ERRORCODEOBJ" wechseln package ERRORCODEOBJ; sub new { # wenn Opjekt mit "xyz->new()" erzeugt wird, # ist das erste übergebene Argument der Klassenname. # in diesem Fall "ERRORCODEOBJ" my $class=shift; # mögliche übergabe des dateinamens, # in der die die errors gespeichert sind. # wenn das shift (auch bekannt als "shift(@_)" ) nicht funktioniert, # dann soll "errormap.txt" in der Variable stehen; my $file = shift || 'errormap.txt'; # üblich ist eine hashreferenz my $self={}; # hier wird der Dateiname der zu lesenden Datei gespeichert $self->{file_name}=$file; # Platz fpr die liste der Errors. $self->{ERRORS}=[]; # zusammen mit dem Klassennamen # machen wir aus der referenz ein Objekt bless($self,$class); # wir liefern das Objekt zurück return $self; } sub load { my $self=shift; my $filename=$self->{file_name}; open( my $errormaplist, '<', $filename ) or die "error open $filename : $!"; my @lines = <$errormaplist>; close $errormaplist; # zeilenunbrüche entferenen; chomp(@lines); # die Referenz von @lines # in der Objektvariable "ERRORS" # speichern $self->{ERRORS}=\@lines; } sub errormap { my $self = shift; my $line =shift; # Liste aktuell halten $self->load(); # abgrage, # ob die zeilennummer überhaupt innerhalb der Größe der Errorliste ist if($line < @{$self->{ERRORS}} and $line >= 0) { # wenn es der hall ist, # dann gib die Fehlermeldung an der Stelle zurück return $self->{ERRORS}->[$line]; } # ansonsten gib "undef" zurück. return undef; } # wir wechsln wieder nach "main" package main; # es wird das Objekt gebildet; my $objekt=ERRORCODEOBJ->new(); # wir machen eine Abfrage print $objekt->errormap(1)."\n";