LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1525|回复: 8

目录和 *.pm有什么区别,程序调用时perl会用哪个?

[复制链接]
发表于 2004-5-6 15:08:42 | 显示全部楼层 |阅读模式
比如,我的@INC里,在/usr/share/perl/5.8.3 中,既有CGI这个目录,又有CGI.pm,有什么区别,为什么会有两个? 在程序中当 use CGI时,到底调用哪个?

下面是我的一个实际例子:
cpan> install Digest
....都ok了,
在 /usr/share/perl/5.8.3下也有 Digest.pm和Digest目录
在 /usr/local/share/perl/5.8.3下会有 Digest.pm出来,还有一个Digest目录,

看了下.pm ,前面是1.05版,后面的是1.08版,后面应该是新装的
???perl最终用那个?

看了 perldoc Digest后,按例子
my $sha=new->("SHA-1");等都出错,还是说@INC中找不到
 楼主| 发表于 2004-5-6 15:58:21 | 显示全部楼层
上面说 @INC的找不到的问题解决了,intall Digest 只安装了MD5,
要install Digest::SHA才能用SHA。
i /Digest.*/ 看到了。

第一个问题,同名的目录 和 .pm是什么关系?
发表于 2004-5-6 16:43:41 | 显示全部楼层
你的perl版本是?
perl --version


后面的语法错误,应该这样:
         $md5  = Digest->new("MD5");
         $sha1 = Digest->new("SHA-1");
         $sha256 = Digest->new("SHA-256");
         $sha384 = Digest->new("SHA-384");
         $sha512 = Digest->new("SHA-512");

         $hmac = Digest->HMAC_MD5($key);
发表于 2004-5-6 16:48:53 | 显示全部楼层
最初由 daemonsh 发表
上面说 @INC的找不到的问题解决了,intall Digest 只安装了MD5,
要install Digest::SHA才能用SHA。
i /Digest.*/ 看到了。

第一个问题,同名的目录 和 .pm是什么关系?

如果不行会有提示的。。看看。。
后面的问题: 我也不懂哦。。看你的perl版本,看用哪个?
 楼主| 发表于 2004-5-6 17:08:29 | 显示全部楼层
谢谢老大,后面一个问题我看了看骆驼书,更晕了,说modules可以是.pm,也可以是二进制可执行文件。

package是codes的命名空间而已,class在perl中就是package,
那么module和package,module和class在 perl中的关系是什么?
 楼主| 发表于 2004-5-6 17:11:28 | 显示全部楼层
跟着上面问题,
在我的程序中,已经use CGI;了
为什么一定要写use CGI::Session;
才能用Session,
为什么 use CGI; 它的子模块Session没有被调进来
发表于 2004-5-6 17:29:30 | 显示全部楼层
最初由 daemonsh 发表
谢谢老大,后面一个问题我看了看骆驼书,更晕了,说modules可以是.pm,也可以是二进制可执行文件。

package是codes的命名空间而已,class在perl中就是package,
那么module和package,module和class在 perl中的关系是什么?


这个感念和C的概念一样,模块是用于能重复利用它,包就是某些功能的集合。perl的解释类似
发表于 2004-5-6 17:35:35 | 显示全部楼层
最初由 daemonsh 发表
跟着上面问题,
在我的程序中,已经use CGI;了
为什么一定要写use CGI::Session;
才能用Session,
为什么 use CGI; 它的子模块Session没有被调进来


这个是定好的规则,就是这样。还有个原因可能是用了CGI,但并不知道下面有多少个子包。
发表于 2004-5-7 13:00:15 | 显示全部楼层
use CGI;不是指目录,一般情况下,而是指的是.pm文件了,目录在使用的时候都要use CGI::XXXXX;这样的,这个CGI才是目录
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表