# вот кусок кода программы majordomo, конкретно начало sub subscribe
sub do_subscribe {
# figure out what list we are trying to subscribe to
# and check to see if the list is valid
local($sm) = "subscribe";
local($list, $clean_list, @args) = &get_listname($sm, 1, @_);
# и здесь функции &get_listname передаются 3 аргумента!!!
# и мне не понятно где они используются в описании sub get_listname, вот оно:
sub get_listname {
local($request, $required, @args) = @_;
local($raw_list, $clean_list);
if (defined($deflist)) { # -l option specified
if (scalar(@args) <= $required) { # minimal arguments, use default list
if ( !( ($raw_list = $deflist)
&& ($clean_list = &valid_list($listdir, $raw_list)) ) ) {
$raw_list = shift(@args) || &squawk("$request: which list?");
$clean_list = &valid_list($listdir, $raw_list);
}
}
elsif ( !( ($raw_list = shift(@args))
&& ($clean_list = &valid_list($listdir, $raw_list)) ) ) {
unshift(@args, $raw_list); # Not a list name, put it back.
$raw_list = $deflist || &squawk("$request: which list?");
$clean_list = &valid_list($listdir, $raw_list);
}
}
else {
$raw_list = shift(@args);
$clean_list = &valid_list($listdir, $raw_list);
}
return ($raw_list, $clean_list, @args);
}