1 2 3 4 5 6 7
use base qw(Boo Foo Bar); use strict; use warnings; my $m = bless{}; $m->whois; # Boo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package Foo; sub new{ return bless{},shift } sub whois{ print __PACKAGE__ } package Bar; sub new{ return bless{},shift } sub whois{ print __PACKAGE__ } package Boo; sub new{ return bless{},shift } sub whois{ print __PACKAGE__ } package main; use base qw(Bar Boo Foo); use strict; use warnings; my $m = main->new; $m->whois;
1 2 3 4 5 6 7
use parent qw( Foo Bar ); # Suche in @ISA nach Modul, das who_am_i() bereitstellen kann; Erster Treffer zieht main->who_am_i(); # Bar muss in ISA sein; Methode Bar::who_am_i() wird direkt aufgerufen main->Bar::who_am_i();
2023-11-04T18:59:34 CrianDas klingt nach potentiellen Fallstricken.
2023-11-04T09:40:29 rostiWas passiert wenn bei use base qw(Foo Bar); Foo und Bar dieselben gleichnamigen Methoden definieren?
2023-11-05T15:14:44 hlubenowUnd dazu mußt Du von mehreren Klassen gleichzeitig erben, die dann auch noch gleichlautende und sich überschneidende Methoden haben?
2023-11-06T14:07:51 hlubenow