求教问题:在perl模块最后加上“1;” 还是会报错“did not return a true value”
时间:2011-05-03
来源:互联网
自己写的两个模块,末尾都加上了“1;”,在Main.pl中调用模块函数时一个正常但另一个报错:
Module 1:
- package Device::Serial;
-
- use strict;
- use warnings;
- use Win32::SerialPort;
-
- require Exporter;
- our @EXPORT = qw();
- our @EXPORT_OK = qw();
- sub1
- sub2
- ...
- 1;
- package Init::ParseCfg;
-
- use strict;
- use warnings;
- use Config::IniFiles;
-
- require Exporter;
- our @EXPORT = qw();
- our @EXPORT_OK = qw();
- sub1
- sub2
- ...
- 1;
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Carp;
-
- use FindBin qw($Bin);
- use lib "$Bin";
-
- use Device::Serial;
- use Init::ParseCfg;
BEGIN failed--compilation aborted at Main.pl line 10."
环境是winxp 32bit, ActivePerl 5.10.1
奇怪的是Serial模块用起来就正常,第二个不管怎么弄都要报这个错。@INC路径应该没有问题啊。请这里的高手帮忙看看是哪里出错了,万分感谢

作者: mmbh 发布时间: 2011-05-03
package Init::ParseCfg;
作者: zhlong8 发布时间: 2011-05-03
回复 zhlong8
感谢LS的回复。
我知道是这个模块的错误,Perl的提示信息很清楚,只是不知道为什么会出现这个错误而另一个模块没有出错。
请问是出现了命名冲突吗?
作者: mmbh 发布时间: 2011-05-03
感谢LS的回复。
我知道是这个模块的错误,Perl的提示信息很清楚,只是不知道为什么 ...
mmbh 发表于 2011-05-03 20:49
你的 Init 文件夹下有 ParseCfg.pm 这个文件吗?我是这个意思。两种名字不同
作者: zhlong8 发布时间: 2011-05-03
谢谢你的热心回复。

我的Main.pl所在文件夹里有一个子文件夹“Init”,里面只有一个文件“ParseCfg.pm”,Device模块也是如此。
开始我以为是路径的问题,但是改了文件夹和pm的名字,甚至把ParseCfg.pm和Main.pl放在同一个文件夹里,直接用"use ParseCfg"和"require ParseCfg.pm"都试过了,还是不行啊

作者: mmbh 发布时间: 2011-05-03
谢谢你的热心回复。
我的Main.pl所在文件夹里有一个子文件夹“Init ...
mmbh 发表于 2011-05-03 21:49
解决了还是没解决?不行把那个源文件发上来
还有你这样用 Exporter 是没法导入函数的吧
作者: zhlong8 发布时间: 2011-05-03
- BEGIN {
- use FindBin qw($Bin);
- unshift @INC,$Bin;
- }
作者: wxlfh 发布时间: 2011-05-03
明天我去公司再看看. 搞定了再来结贴哈.
我这样用Export就是不要默认导入任何sub,调用时必须用完整的包名称.
BTW, 这和模块中sub的返回值木有关系吧?
作者: mmbh 发布时间: 2011-05-03
回复 wxlfh
谢谢回复.
但是Device::Serial又是可行的啊? use就相当于BEGIN{require和import}的吧,这个不是应该编译时就加载的吗?
明天去try一try,空了一定得好好看看羊驼书啊.

作者: mmbh 发布时间: 2011-05-03
谢谢回复.
但是Device::Serial又是可行的啊? use就相当于BEGIN{require和imp ...
mmbh 发表于 2011-05-03 22:02
问题不在 main.pl 你两个模块里面都是 require 'Exporter'; 应该用 use base 'Exporter';
如果你要用全名那还要 Exporter 做什么……
作者: zhlong8 发布时间: 2011-05-03
回复 zhlong8
那个Exporter只是想试一试导出的例子,我现在是边学边做,各种可用的东西都拿来试一试哈.
不用的话最后得把它注释或删掉.
作者: mmbh 发布时间: 2011-05-03
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28