Иногда мне нужна полезная служебная функция, такая как List::Util::max
в середине большой программы, которая делает много вещей. Так что, если я сделаю
use List::Util 'max';
В верхней части моей программы я застрял с этим символом, загрязняя все мое пространство имен, хотя он мне нужен только в одной подпрограмме.
Так что я подумываю попробовать другой шаблон, вместо этого:
use List::Util ();
# a whole bunch of stuff later...
sub blah {
List::Util->import( 'max' );
$blah = max @foobar;
...
}
Однако есть две проблемы. С одной стороны, это не автоматически не импортирует в конце блока (drat.), Я должен был бы отменить все с unimport
.
Другая проблема заключается в том, что, по-видимому, прототипы применяются неправильно, поэтому я должен сказать max( @foobar )
вместо более красивой версии без скобок.
Есть ли простой способ временно импортировать символы для блока, который бы автоматически приводил их к удалению в конце блока и который также правильно обрабатывал бы прототипы?