perl – 为什么sub语句中的use语句适用于全局?
发布时间:2020-12-15 21:53:38 所属栏目:大数据 来源:网络整理
导读:use WWW::Mechanize;$mech = new WWW::Mechanize;$mech-get("http://www.google.com");$html = HTML::TreeBuilder::XPath-new_from_content($mech-content);sub test{ use HTML::TreeBuilder::XPath;} 上面的代码编译,因此sub中的use语句全局应用. 为什么per
use WWW::Mechanize; $mech = new WWW::Mechanize; $mech->get("http://www.google.com"); $html = HTML::TreeBuilder::XPath->new_from_content($mech->content); sub test { use HTML::TreeBuilder::XPath; } 上面的代码编译,因此sub中的use语句全局应用. 为什么perl这样做?它没有任何意义. 解决方法
使用模块;有两个影响.
第一种是加载模块.显然,这具有全球影响.如果多个其他模块使用模块,则不希望多次加载模块. 第二种是调用模块的导入方法.对于大多数模块,这用于将符号导出到调用者的名称空间,以便可以调用这些函数,而无需使用完整的包名称限定它们.这显然影响的不仅仅是一些sub,因为没有人给每个sub赋予它自己的命名空间.但那真的取决于你. 但是,某些模块的导入方法做了一些完全不同的事情.它们改变了在指令存在的词法范围内编译代码的方式.这些被称为pragma.用严格;是一个例子.在sub中使用这些模块是有意义的.使用HTML :: TreeBuilder :: XPath;然而,在一个子中,没有任何意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |