# Konstruktor einer Klasse sub new{ my $class = shift; # Name der Klasse # Argumente in @_ z.B. als Hash # hier können wir default-Werte setzen # da ist auch gleich zu sehen, was fakt ist my %cfg = ( foo => undef, bar => '', @_); # @_ überschreibt die vorbelegten Werte # Pflichtfelder setzen wir auf undef return eval{ # Argumente prüfen # wenn was nicht passt, Exception schmeißen # code hierzu... my $self = bless{ # Attribute foo => $cfg{foo} or croak "foo wurde nicht übergeben", }, $class; # letzte Zeile im Block ist der returnvalü $self; # das wird zurückgegeben, wenn alles geklappt hat }; } # und draußen... my $obj = Class->new(%argumente) || do{ # hier machen wir das, was notwendig ist, wenn # das Objekt nicht erstellt werden konnte # Reason in $@ };