in reply to One module to use them all (proxy moudle that exports subs of other modules)
My take, with one of the sub-modules being Exporter-based, the second using its own import(), and the One Module still being able to figure out how to bind them together and tell the world what to do:
11146642-tldr.pl
#!perl use 5.012; # //, strict, say use warnings; use FindBin; use lib "$FindBin::Bin/lib"; use Mod11146642::All; # Mod11146642::One uses Exporter # Mod11146642::Two uses manual import() # but both work through Mod11146642::All oneFunction(); twoFunction();
Mod11146642/All.pm
package Mod11146642::All 1.00; use 5.012; # //, strict, say use warnings; use Exporter 5.47 qw(import); my %colons; my @inherited; BEGIN { $colons{$_} = $_ for keys %::Mod11146642::All::; } use Mod11146642::One; use Mod11146642::Two; BEGIN { for (sort keys %::Mod11146642::All::) { next if /^__ANON__$/; # ignore anonymous functions next if exists $colons{$_}; # ones that were in the namesp +ace before weren't inherited push @inherited, $_; # if we're here, we inherited +this } # local $" = ","; warn "inherited (@inherited)\n"; # un-comment + this line if you want to debug the ineritance check } our @EXPORT = @inherited; 1;
Mod11146642/One.pm
package Mod11146642::One 1.00; use 5.012; # //, strict, say use warnings; use Exporter 5.47 qw(import); our @EXPORT = qw(oneFunction); sub oneFunction { local $" = ","; printf STDERR "Called %s(@_)\n", (caller(0))[3]; } 1;
Mod11146642/Two.pm
package Mod11146642::Two 2.00; use 5.012; # //, strict, say use warnings; sub twoFunction { local $" = ","; printf STDERR "Called %s(@_)\n", (caller(0))[3]; } sub import { my ($pkg) = @_; my $callpkg = caller(0); no strict 'refs'; my $exportfunction = $callpkg . '::twoFunction'; *{$exportfunction} = \&twoFunction; } 1;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: One module to use them all (proxy moudle that exports subs of other modules)
by BillKSmith (Monsignor) on Sep 04, 2022 at 20:46 UTC | |
by pryrt (Abbot) on Sep 04, 2022 at 22:25 UTC | |
by LanX (Saint) on Sep 04, 2022 at 20:56 UTC |
In Section
Seekers of Perl Wisdom