sub climb_up { my $self=shift; # nur gerade Anzahl von Werten pop(@_) if(@_%2); my %options=@_; unless($options{code_find} and ref($options{code_find}) eq 'CODE') { croak(qq(in method "climb_up" "code_find" had to be defined! )); } $options{return_found}=1 unless(exists $options{return_found}); $options{break_on_undef}=1 unless(exists $options{break_on_undef}); my @ret; my $now=$self; while ( $now = $now->parent_row ) { my @r=$options{code_find}->($now); last if($options{break_on_undef} and @r==1 and !defined($r_[0])); push(@ret,@r) if($options{return_found}); } return 1 unless($options{return_found}); return @ret; }