Here, when you call Bravo::foo() but foo() is not in Bravo, Bravo's AUTOLOAD subroutine will call Alpha's foo() subroutine. See 'Autoloading' in perlsub for more on AUTOLOAD.use strict; use warnings; package Alpha; our $language = "US-English"; $Alpha::first = "Alpha"; sub SayHello {"hello from package Alpha\n"}; sub SayBye {"Goodbye.\n"} sub GreetByName {"Well Hello $_[0].\n";} package Bravo; our $AUTOLOAD; sub AUTOLOAD { $AUTOLOAD =~ s/^.+:://; # strip package name *sym = $Alpha::{$AUTOLOAD}; *sym{CODE}->(@_); } $Bravo::first = "Bravo"; sub SayHello {"hello from package Bravo\n"}; package main; ### begin_: get stuff from A print("$Alpha::first\n"); print Alpha::SayHello(); print("$language\n"); print Alpha::SayBye(); # -> Goodbye. print Alpha::GreetByName('Dolly'); # -> Well Hello Dolly. print "\n---------------------\n"; ### begin_: get stuff from Bravo print("$Bravo::first\n"); print Bravo::SayHello(); print("$language\n"); print Bravo::SayBye(); # -> Goodbye. print Bravo::GreetByName('Billy'); # -> Well Hello Billy. print "\n---------------------\n";
In reply to Re: The Scope Resolution Operator (was Re: ISA with packages ... A barebones minimal example)
by Arunbear
in thread ISA with packages ... A barebones minimal example
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |