Ein Tipp - man sollte nach möglichkeit sowohl in der Klasse als auch von außerhalb nicht direkt auf den Hash zugreifen, sondern Setter / Getter dafür verwenden.
Mit einem Tipp aus Peter Wainwrght et al "professional Perl programming" spart man sich viel Arbeit, wenn man das dann so abkürzt:
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
26
27
28
sub _property ($$;$) {
my $self = shift; # object
my $attr = shift; # attribute to get or set
my $setter = @_ == 1; # is this method used as a setter?
my $value = shift; # value for the setter
# if we use "if (defined $value)" here, we can't set the values
# to undef! So we have to use this:
if ($setter) {
my $old_value = $self->{$attr};
$self->{$attr} = $value;
return $old_value;
}
else {
return $self->{$attr};
}
} # sub _property
sub uhrzeit ($;$) { return shift->_property('uhrzeit', @_) }
sub stunden ($;$) { return shift->_property('stunden', @_) }
sub minuten ($;$) { return shift->_property('minuten', @_) }
sub sekunden($;$) { return shift->_property('sekunden', @_) }
sub datum ($;$) { return shift->_property('datum', @_) }
sub tag ($;$) { return shift->_property('tag', @_) }
sub monat ($;$) { return shift->_property('monat', @_) }
sub jahr ($;$) { return shift->_property('jahr', @_) }
...
:-)\n\n
<!--EDIT|Crian|1066900877-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite