http://www.perlmonks.org?node_id=978006


in reply to import list

I think it's mainly defined by pure convention as intended by the module author's idea of the modules interface. Seems, the module author's intention here was to let the argument resemble a command-line option switch.

Basically use Module qw(a b c d); is translated to BEGIN{ require Module; Module->import(qw(a b c d)); } (see use).

In Module::import(), the author has the freedom to do anything with the given list (after removing the module's name from the parameter list) like using it as-is ... @list = qw(a b c d) ... or interpreting it as a flattened hash ... %pairs = (a => 'b', c => 'd') ... or as a parameter list ... my($a,$b,$c,$d) = qw(a b c d) ... and so on. Then s/he can treat the arguments as needed, like filtering, grouping, normalizing, etc.

In this case: less `perldoc -l English`

... # Grandfather $NAME import sub import { my $this = shift; # 'English' my @list = grep { ! /^-no_match_vars$/ } @_ ; # anything that is +not '-no_match_vars' local $Exporter::ExportLevel = 1; if ( @_ == @list ) { ...