Hi
sorry - ich hab wohl das Beispiel zu sehr gekürzt ;-)
use strict;
sub new {
my $self = shift;
return bless {
eigenschaft => '',
fill => 'abcdef0123456789',
}, ref $self || $self;
}
sub methode1(){
my $self=shift;
srand(time);
while(length($self->{eigenschaft}) < 50) {
$self->{eigenschaft} .= substr($self->{fill}, int(rand(length($self->{fill}))), 1);
}
print $self->{eigenschaft}."\n"; # liefert das richtige Ergebnis
print &methode2($self)."\n"; # liefert hin+wieder das falsche Ergebnis
print $self->{eigenschaft}."\n"; # liefert das richtige Ergebnis
}
sub methode2(){
my $self=shift;
if($self->{eigenschaft} == ''){ # warum ist dieser Ausdruck hin+wieder wahr?
return '###'.$self->{eigenschaft};
}
else{
return $self->{eigenschaft};
}
}
dieses Beispiel ist aber lauffähig
als Ausgabe erhalte ich z.B.
afabf0ab0d65ed122d8a2aa444d8c4a085fca7a27d37d10089
###afabf0ab0d65ed122d8a2aa444d8c4a085fca7a27d37d10089
afabf0ab0d65ed122d8a2aa444d8c4a085fca7a27d37d10089
folgendes Beispiel schlägt bei mit immer fehl
use strict;
sub new {
my $self = shift;
return bless {
eigenschaft => '',
}, ref $self || $self;
}
sub methode1(){
my $self=shift;
$self->{eigenschaft} = 'a';
print $self->{eigenschaft}."\n"; # liefert das richtige Ergebnis
print &methode2($self)."\n"; # liefert das falsche Ergebnis
print $self->{eigenschaft}."\n"; # liefert das richtige Ergebnis
}
sub methode2(){
my $self=shift;
if($self->{eigenschaft} == ''){ # warum ist dieser Ausdruck wahr?
return '###'.$self->{eigenschaft};
}
else{
return $self->{eigenschaft};
}
}
Ausgabe:
a
###a
a
Danke!