perl – 在大脚本中用词汇方式导入有用的函数
发布时间:2020-12-15 22:04:55 所属栏目:大数据 来源:网络整理
导读:有时我需要一个有用的实用程序函数,比如List :: Util :: max,它在大型程序的中间执行很多操作.所以,如果我这样做 use List::Util 'max'; 在我的程序的顶部,我坚持使用该符号,污染我的整个命名空间,即使我只需要在一个子程序中. 所以我一直在考虑尝试不同的模
有时我需要一个有用的实用程序函数,比如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.)我将不得不通过unmport撤消所有内容. 另一个问题是显然原型没有得到正确应用,所以我不得不说max(@foobar)而不是更漂亮的无括号版本. 是否有一种简单的方法来临时导入块的符号,这将自动使它们在块的末尾消失,哪些也可以正确处理原型? 解决方法
您可以本地化符号表条目:
use List::Util (); @y = qw(1 3 5 -9 4); sub max { # return maximum *absolute value* of list my $max = abs(shift); $max<abs($_) && ($max=$abs($_)) for @_; return $max; } sub max2 { local *max = *List::Util::max; return max(@_); } print "My max: ",max(@y),"n"; # ==> 9 print "List::Util::max ",max2(@y),"n"; # ==> 5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |