> Where should this info be maintained? In a module in @INC (sort of like
> CPAN/MyConfig.pm)? Or in a special file that's only written to via a
> module install? Or in a block atop each module that's yanked out via
> MakeMaker? Or???
The parser needs to have it in a standard system-wide place.
I wasn't actually proposing it as a replacement mechanism for Exporter,
but if that standard configuration file included the line:
autouse STD::autouse { 1 }
then I suppose any other module could replace:
@EXPORT = qw( foo bar );
with:
autouse foo {1}
autouse bar {1}
Which implies we might make use of RFC 128's variadic parameters feature and
the proposed multi-valued C<foreach> to implement autouse as:
sub autouse ( ("", &) : repeat {
foreach my ($qualified_name, $condition) (@_) {
my ($package, $name) = $qualified_name =~ m/(.*)::(.*)/;
push @{$autousage{$name}},
{ package => $package, condition => $condition };
}
}
and treat ourselves to:
autouse foo {1}, bar {1};
I suppose this also implies a C<requested> subroutine (C<autouse>'d,
of course :-) within modules -- so that one can replace:
@EXPORT_OK = qw( only by request );
with:
autouse only {requested},
by {requested},
request {requested},
;
Hmmmm. Tidy, but too tedious perhaps?
Damian