作为Perl的新手而不是动态语言,我对如何不直接管理模块感到有些惊讶.
当然,cpan X
理论上确实有效,但我正在从三个不同的机器和操作系统(在工作中,在家里,在外部环境中测试)开发相同的项目.
在工作(Windows 7)我有问题使用cpan
因为我们的防火墙使ftp无法使用
在家(Mac OS X)它确实有效
在外部环境(Linux CentOs)中,它在数小时后工作,因为我没有root访问权限,我必须配置cpan
为以非root用户身份运行
我尝试过另一台可以访问的服务器.如果前面的外部环境是VPS,所以我有shell访问,这另一种是廉价的共享主机,我也没有办法安装之外的其他新模块,预装
目前我还是无法在Windows下安装模板.我已经看到,作为一种替代方案,我可以编译它,我也尝试过ActiveState的PPM,但模块不存在.
现在,我的困惑在于Perl是一种动态语言.我在工作时遇到了所有这些问题,例如,在C中,我必须为所有平台编译所有库,但我认为使用Perl的方法与Python或PHP的方法非常类似.复制模块在目录中并导入它的情况的百分比只是起作用.
所以,我的问题是:如果Perl的模块是用Perl编写的,为什么复制/粘贴方法不起作用?如果必须编译某些(或部分)模块,如何在CPAN中查看模块是否仅为Perl还是依赖于编译库?是不是有办法下载模块(tar,zip ...)并使用cpan来部署它?这将解决我在Windows下的问题.
现在,Perl是一种动态语言,但这并不意味着人们编写的所有内容都可以跨平台移植.那不是语言的错.这甚至都不是程序员的错.有些东西,比如Win32 :: OLE,不适用于Unix.:)
其他动态语言会有一些相同的问题.如果必须编译C代码,则无法仅将文件复制到另一台计算机.某些发行版根据您的操作系统等配置代码略有不同.
即使您可以复制文件,也必须确保复制所需的所有文件.你知道特定模块需要的一切吗?请记住,他们中的许多人都有依赖关系.
你遇到的大多数问题与语言没有任何关系.你在使用这些工具时遇到了麻烦.如果您想要一个为您做出所有决定的零配置CPAN工具,请尝试使用cpanminus.你得到的东西大多是相同的cpan
(尽管代码不同),但它会为你做出所有的决定.它不会运行任何分发测试,而是安装到您的用户目录中.当你需要一些能让你控制的东西时,请回过头来cpan
.