pl: irgendein anderes Thema

Beitrag lesen

problematische Seite

Perl ist erst tot, wenn ich es bin 😉

Mein Framework in PHP -- nee, guck mal wie einfach das in Perl ist, hab grad ein schönes Beispiel: Die Seite DST soll interaktiv werden, also Benutzereingaben ermöglichen.

Als Erstes werden Platzhalter fürs Ergebnis eingbaut: %mrz%, %okt% und %next% hierauf kommen 2 Datumsangaben und ein Jahr.

Als Nächstes bekommt die Seite ein Interface konfiguriert interface = dst

und in dieser Datei steht eine Funktionsreferenz:

# Datei interface/dst.pm

my $control = sub{
    my $self = shift;
    if( my $year = $self->param('next') ){
        my $mrz = Scaliger->new( date => "31.3.$year" ) or 
          return $self->errmsg( "$@" , $self->{URL});

        my $okt = Scaliger->new( date => "31.10.$year" ) or 
          return $self->errmsg( "$@" , $self->{URL});

        $self->{STASH}{mrz} = sprintf("%02d.03.%d", 31 - $mrz->wd, $year );
        $self->{STASH}{okt} = sprintf("%02d.10.%d", 31 - $okt->wd, $year );
        
        $self->eav('title', "Beginn und Ende der Sommerzeit im Jahr $year");
        $self->eav(
          'descr', 
           "Zu bestimmen ist der letzte Sonntag im März bzw. Oktober $year, Ergebnis untenstehend"
        );
        $self->{STASH}{next} = $year + 1;
    }
};

Die Funktion wird aufgerufen, wenn GET- oder POST−Parameter im Request sind und setzt einfach nur die berechneten Platzhalter in $self->{STASH}, je nachdem, welches Jahr eingegeben wurde. D.h., zum Erweitern einer statischen HTML-Seite damit Benutzereingaben möglich werden, ist lediglich eine Funktion in einer minimalen Moduldatei zu definieren.

Das HTML ums Formular erweiteren ist ein Witz, zumal die Fehlerbehandlung automatisch eingebaut ist. Des Weiteren: Das Interface dst.pm kann an beliebig weitere HTML-Seiten per Konfiguration zugewiesen werden zum Einbau dynamischer Inhalte DST betreffend. Das vermeidet Coderedundanzen und das ist eben Perl.

MfG