package template; use strict; use warnings; sub new { my $class=shift; my $self={}; # hier wird das Template gespeichert $self->{template}=''; # wir machen aus dem Paket (Klasse) ein Objekt bless($self,$class); return $self; } sub read { # objekt übernehmen my $self=shift; # dateiname übernehmen my $file=shift; # ganze Datei einlesen # da Inputseparator undef local $/=undef; # Fehler beim öffnen der Datei -> abbruch return 0 if(!open(my $fh, '<', $file)); # man braucht kein sysopen um eine Datei nur lesend zu öffnen # alles einlesen $self->{template}=<$fh>; close($fh); return 1; } sub render { my $self=shift; my $data=shift; # kein Hash -> abbruch return '' if(!ref($data) eq 'HASH'); my $output=$self->{template}; # "\w" findet alle alphanumerischen Zeichen "[A-Za-z0-9]" $output=~ s/<-html_(\w+)->/$data->{lc($1)}/gsx; # gerenderter Text zurück return $output; } 1;