package Tank{ use strict; use warnings; # Tank bauen sub new{ my $class = shift; my %cfg = ( fuel => 0, @_); return bless \%cfg, $class; } # Tankinhal ändern sub fuel{ my $self = shift; my $fuel = shift; unless( defined $fuel ){ return $self->{fuel} } else{ $self->{fuel} = $fuel } } }; package PKW{ use strict; use warnings; # Auto bauen sub new{ my $class = shift; my %cfg = (tank => {}, @_); bless \%cfg, $class; } # Tankinhalt ändern, delegierte Methode sub fuel{ my $self = shift; return $self->{tank}->fuel(@_); } }; 1; ########################################################## package main; use strict; use warnings; my $tank = Tank->new( fuel => 100 ); my $pkw = PKW->new( tank => $tank ); my $zweitwagen = PKW->new( tank => $tank ); $zweitwagen->fuel(0); # Leerfahren print $pkw->fuel; # Tank leer