Perl`use` – import不会被调用两次?

Perl`use` – import不会被调用两次?,第1张

概述怀疑perl基础知识的使用 它有点类似于我的其他问题Perl: Two packages in same file… 考虑一个perl脚本: Script.pl use INCLUDES; INCLUDES.pm package INCLUDES;use Exporter;############# MY DOUBT STARTS HERE ###############use Modul @H_404_6@ 怀疑perl基础知识的使用

它有点类似于我的其他问题Perl: Two packages in same file…

考虑一个perl脚本:

Script.pl

use INCLUDES;

INCLUDES.pm

package INCLUDES;use Exporter;############# MY DOUBT STARTS HERE ###############use Module1;use Module2;##################################################our @ISA = qw(Exporter);our @EXPORT = qw();sub import {  print 'INCLUDES imported to ' . caller . "\n";}

Module1.pm

package Module1;use strict;use Exporter;use INCLUDES;    #####=> INCLUDES.pm 'use'dour @ISA = qw(Exporter);our @EXPORT = qw();1;

Module2.pm

package Module2;use strict;use Exporter;use INCLUDES;  #####=> INCLUDES.pm 'use'dour @ISA = qw(Exporter);our @EXPORT = ();1;

OUTPUT

D:\Do_analysis>Script.plINCLUDES imported to main

根据perl文档,使用INCLUDES;在Module1& Module2 => BEGIN {require’INCLUDES.pm’; ‘INCLUDES’ – > import();}.因此,应该在Module1.pm,Module2.pm中调用import().

我希望输出如下所示,

预期输出?

D:\Do_analysis>Script.plINCLUDES imported to mainINCLUDES imported to Module1INCLUDES imported to Module2

但为什么执行不如预期?

更新

这是我想通过INCLUDES.pm文件实现的目标.

注意:PACKAGE2可能想要访问PACKAGE3,PACKAGE4等.我不想单独使用PACKAGE2中的所有模块,而是想创建一个库INCLUDES并在所有其他模块中使用它.

这种方法有效吗?还是值得推荐的?

我很欣赏任何有关如何实现这一目标的想法.@H_301_64@谢谢!

解决方法 如果你要搬家

use Module1;use Module2;

在子导入{…}之下,你会得到预期的行为.

问题是您在编译器甚至在INCLUDES.pm中进行子导入之前执行Module1.pm.

当Module1.pm确实使用INCLUDES;时,Perl说“哦,它已经加载”(响应要求)和“哦,它没有导入”(响应导入),因为INCLUDES.pm的部分那个已创建导入的东西尚未编译.对于Module2.pm也是如此.

一般来说,如果你有一个彼此包含的模块(直接或其他),你做错了(在设计方面),你最终将不得不处理这些问题.您可能会发现Mini-Tutorial: Mutual Use of Exporting Modules在处理这些问题时很有用.

总结

以上是内存溢出为你收集整理的Perl`use` – import不会被调用两次?全部内容,希望文章能够帮你解决Perl`use` – import不会被调用两次?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存