Thread Stilfragen (Anfaengerperl) (12 answers)
Opened by shi8dao at 2011-05-13 08:33

rosti
 2011-05-14 06:40
#148588 #148588
User since
2011-03-19
3211 Artikel
BenutzerIn
[Homepage]
user image
Quote
aber ansonsten schreibt heute kaum noch jemand seine klassen komplett selbst.


Wer Funktionsaufrufe langweilig findet, schreibt Tie-Klassen:

Code (perl): (dl )
1
2
tie my $date, 'myDate';
print $date->{'dd.mm.yy x'}; # 14.05.2011 06:38:06


Modul untenstehend ;)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package myDate;

use strict;
use warnings;


sub TIESCALAR{
        my $class = shift;
        my $time  = shift || time;
        my $self = {};
        my @d = localtime($time);
        $self->{VAL} = {
                yy            => sprintf("%02u", (1900+$d[5])%100),
                yyyy          => sprintf("%04u", (1900+$d[5])),
                'yy-mm-dd'    => sprintf("%04u-%02u-%02u", $d[5]+1900, $d[4]+1, $d[3]),
                'dd.mm.yy'    => sprintf("%02u.%02u.%04u", $d[3], $d[4]+1, $d[5]+1900),
                'dd.mm.yy x'  => sprintf("%02u.%02u.%04u %02u:%02u:%02u", $d[3], $d[4]+1, $d[5]+1900, $d[2], $d[1], $d[0]),
        };
        return bless $self, $class;
}

sub FETCH{
        my $self = shift;
        return $self->{VAL};
}


Schöne Spielerei, aber ernsthafter Hintergrund: In meinen Anwendungen brauche ich verschiedene Datum- und Zeitformate, u.a. für HTTP (Last-Modified), Mail-Header und Cookies. Z.Z. binde ich dazu die Module POSIX und HTTP::Date ein. In Zukunft wird das alles in einem Modul vereint und der Zugriff auf die Formate erfolgt nicht über Methodenaufrufe, sondern einfach per Referenz, $date->{http}, $date->{cookie}, $date->{mail} usw.
Last edited: 2011-05-14 10:09:45 +0200 (CEST)

View full thread Stilfragen (Anfaengerperl)