Perl兼容性

时间:2012-05-08 16:14:11

标签: perl windows-7-x64

这不是我的专业领域,所以我希望能提出正确的问题。

我们有一台租赁服务器。旧服务器是32位Windows服务器,新服务器是64位Windows 2008 R2 SP1。

其中一个Web应用程序使用Perl来运行一些脚本。

  1. 我们可以在新的64位机器上运行相同的32位版本吗? (例如,如果有相同的版本,但一个是32位,一个是64位,它们基本相同吗?)
  2. 如果脚本正在使用32位版本,它是否仍然可以在64位版本的Perl下运行?
  3. 如果问题需要澄清,请告诉我,我会看到问我们团队中的合适人员。

3 个答案:

答案 0 :(得分:2)

我认为你的两个问题的答案都是肯定的。 32位应用程序应该可以在64位Windows上正常运行,但是无法使用任何64位功能(如果您想要解析大的话,更大的可用地址空间可能是最重要的XML使用XML :: Twig; - )。

在32位perl下运行的脚本将在64位perl上运行,前提是您按顺序获取64位perl的所有模块,因为它们通常从不同的目录运行。另外,请注意,对于Windows上的64位perl,您可能需要草莓perl,ActiveState perl或类似功能。据我所知,Cygwin只有32位。

答案 1 :(得分:2)

  1. 是的,您可以,只要您正确地重新部署,包括依赖项的构建步骤。只是复制文件只会在整个应用程序堆栈是纯Perl时才有效,这是不可能的。 - 是的,它们基本相同,但二进制不兼容。
  2. 可能是的。依赖项可能会出现问题,但由于32位/ 64位差异导致的模块数量微不足道。

答案 2 :(得分:2)

如果您担心兼容性,您应该能够在64位计算机上运行32位版本的perl(假设两者都是x86)。但64位版本应该与32位版本大致相同,但有一些例外情况不应影响脚本。 (它们主要与模块中的C / XS代码有关。二进制兼容性的东西。意味着模块必须为64位构建。幸运的是,任何不吮吸的Perl解释器都会为你做构建的东西。 * nix的情况,或者提供一个包含预先构建的模块(如ActiveState)的包管理器。)