我对 Perl 很陌生,但对动态语言还不太熟悉,我对模块的管理如此不直接感到有点惊讶。
Sure, cpan X
理论上确实有效,但我正在从三台不同的机器和操作系统上处理同一个项目(在工作中,在家里,在外部环境中进行测试)。
- 在工作中(Windows 7)我在使用时遇到问题
cpan
因为我们的防火墙导致 ftp 无法使用
- 在家里(Mac OS X)它确实可以工作
- 在外部环境(Linux CentOs)中,它可以在几个小时后工作,因为我没有 root 访问权限,我必须配置
cpan
以非 root 用户身份操作
- 我已经在另一台可以访问的服务器上尝试过。如果之前的外部环境是 VPS,所以我有 shell 访问权限,那么另一个是廉价的共享主机,除了预安装的模块之外,我无法安装新模块
目前我还是无法安装Template在Windows下。我已经看到,作为替代方案,我可以编译它,并且我也尝试过 ActiveState 的 PPM,但该模块在那里不存在。
现在,我的困惑是 Perl 是一种动态语言。我在工作时遇到过所有这些问题,例如,使用 C 语言时,我必须编译所有平台的所有库,但我认为使用 Perl 的方法与 90 年代的 Python 或 PHP 非常相似在 % 的情况下,将模块复制到目录中并导入它很简单。
所以,我的问题是:如果 Perl 的模块是用 Perl 编写的,为什么复制/粘贴方法不起作用?如果必须编译某些(或某些部分)模块,如何在 CPAN 中查看模块是否仅支持 Perl 或者依赖于已编译的库?有没有办法下载模块(tar、zip...)并使用 cpan 来部署它?这将解决我在 Windows 下的问题。
现在,Perl 是一种动态语言,但这并不意味着人们编写的所有内容都可以跨平台移植。这不是语言的错。这甚至不是程序员的错。有些事情,比如Win32::OLE不应该在 Unix 上工作。 :)
其他动态语言也会有一些相同的问题。如果您必须编译 C 代码,您将无法仅仅将文件复制到另一台机器。某些发行版的代码配置略有不同,具体取决于您的操作系统等。
即使您可以复制文件,您也必须确保复制所需的所有文件。您知道特定模块所需的一切吗?请记住,其中许多都有依赖性。
您遇到的大多数问题与语言无关。您在使用工具时遇到了问题。如果您想要一个零配置的 CPAN 工具来为您做出所有决定,请尝试cpan负值。这基本上与你摆脱的事情是一样的cpan
(尽管代码不同),但它为您做出所有决定。它不运行任何发行版测试,并且安装到您的用户目录中。当您需要一些可以让您控制的东西时,请返回cpan
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)