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 ) {
...
|