免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2948 | 回复: 6
打印 上一主题 下一主题

如何知道perl脚本会调用哪些模块? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-04 17:13 |只看该作者 |倒序浏览
我是新注册会员,上来问个问题,还请不要鄙视我...
我网上搜索了下,没有找到什么答案,还请知道的热心人提醒一句。

我在开发板上按照Makefile.micro默认编译了一个microperl.并且下载了进去.

有一个perl的脚本,我想放在开发版上运行,但是它里面用到了一些microperl不包含进去的模块,
比如脚本中有这么一句:
use Digest::MD5  qw(md5 md5_hex md5_base64);

于是我就将对应的MD5.pm拷贝进板子,但是发现还是运行不了.
提示:
Can't locate strict.pm in @INC (@INC contains: /usr/lib/perl5/5.8.9 /usr/local/lib/perl5/5.8 .) at /usr/lib/perl5/5.8.9/Digest/MD5.pm line 3.
看来是因为MD5.pm中需要strict.pm...

我也不能一直这么试下去吧?能知道他们一层层都调用了什么模块么?我把他们一起拷贝进去
或者把所有MD5.pm中use语句对应的模块找出来,再递归找其他的模块?

谢谢

论坛徽章:
0
2 [报告]
发表于 2009-05-04 17:19 |只看该作者
请使用cpan安装D::MD5模块 关联模块会自动安装的

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2009-05-04 17:25 |只看该作者
原帖由 havef 于 2009-5-4 17:13 发表

我也不能一直这么试下去吧?能知道他们一层层都调用了什么模块么?我把他们一起拷贝进去

你可以在一个完整的 Perl 环境下执行下这个脚本,在脚本的最后把 %INC dump 出来看看,就知道它用了哪些模块了。

[ 本帖最后由 MMMIX 于 2009-5-4 17:28 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-05-04 17:28 |只看该作者

回复 #2 hfahe 的帖子

原来这个名词叫关联模块啊...我表述的费老劲了。哈哈。
既然PC上有这个网络安装关联模块的方法,那么如果自己编译安装应该有相应的命令。
嗯,谢谢,我再找找看

论坛徽章:
0
5 [报告]
发表于 2009-05-04 17:30 |只看该作者

回复 #3 MMMIX 的帖子

哇,好强大。。。dump,记下了
我试试看,谢谢

论坛徽章:
0
6 [报告]
发表于 2009-05-04 17:33 |只看该作者

回复 #3 MMMIX 的帖子

但另外一个方面perl是解释执行的,如果说脚本需要交互,或者说是一个cgi,需要传参数进去,那么执行不到最后,应该就是这种方法的局限性了吧

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2009-05-04 17:48 |只看该作者
原帖由 havef 于 2009-5-4 17:33 发表
但另外一个方面perl是解释执行的,

Perl 不是解释执行的,或者说 Perl 解释执行的不是你的代码,而是你的代码编译后的字节码,和 Java 类似。

如果说脚本需要交互,或者说是一个cgi,需要传参数进去,那么执行不到最后,应该就是这种方法的局限性了吧

这些限制不了这个方法,因为 use/require 都是在 BEGIN 阶段执行的,到你 dump %INC 的时候,BEGIN 已经执行完了(除非你把 dump %INC 放在一个 BEGIN block 中)。

真正对这个方法有影响的是通过 eval 或 do 动态加载模块, 如果你的代码中用到了这些,那就要在这些代码执行后再 dump %INC.

[ 本帖最后由 MMMIX 于 2009-5-4 17:49 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP