У меня есть подпрограмма в модуле, в которой я хочу использовать «наши» переменные, найденные в вызывающей программе. Следующий код делает именно то, что я хочу, но только для двух ранее известных случаев. Есть ли способ сделать это более элегантно?
sub hello { # this code is in a module
my $caller = (caller)[0];
if ($caller eq 'main') {
print "Hello $main::global!\n";
} elsif ($caller eq 'Test') {
print "Hello $Test::global!\n";
} else {
print "I don't know what to do!\n";
return 0;
}
return 1;
}