2012-05-08 130 views
2

這不是我的專業領域,所以我希望問一個正確的問題。Perl兼容性

我們有一個租賃滾動的服務器。舊服務器是32位Windows服務器,新服務器是64位Windows 2008 R2 SP1。

其中一個Web應用程序使用Perl來運行一些腳本。

  1. 我們可以在新的64位機器上運行相同的32位版本? (例如,如果有相同的版本,但一個是32位,一個是64位,它們基本上是一樣的嗎?)
  2. 如果腳本在32位版本上工作,它應該仍然在64位Perl的版本?

如果問題需要澄清,請讓我知道,我會看到關於詢問我們團隊中的適當人員。

+0

我會將答案帶給我的團隊,然後將適當的答案標記爲正確。謝謝你們用簡單的語言回答。 – HPWD

回答

2

我認爲你的問題的答案是肯定的。 32位應用程序應該在64位Windows上運行良好,但無法使用任何64位功能(如果希望解析大的話,更大的可用地址空間可能是最重要的XML使用XML :: Twig ;-)。

在32位perl下運行的腳本將在64位perl上工作,前提是您獲得64位perl的所有模塊,因爲它們通常從不同的目錄運行。另外,請注意,對於Windows上的64位perl,您可能需要使用Strawberry perl,ActiveState perl或類似軟件。就我所知,Cygwin只有32位。

2
  1. 是的,你可以,只要你正確地重新部署,包括依賴的構建步驟。只需將整個應用程序堆棧設置爲純Perl即不可能,只需將文件複製過來即可。 —是的,它們基本相同,但二進制不兼容。
  2. 可能是的。依賴關係可能會出現問題,但由於32位/ 64位差異而導致失敗的模塊數量極少。
2

如果您擔心兼容性問題,則應該能夠在64位計算機上運行32位版本的Perl(假設兩者均爲x86)。但是64位版本應該或多或少地與32位版本相同,但有一些例外情況不應該影響腳本。 (他們必須在模塊中使用C/XS代碼,主要是二進制兼容性的東西,意思模塊必須爲64位構建,幸運的是,任何不會吸收的Perl解釋器都會爲你構建這些東西* nix的情況,或者提供一個包含ActiveState之類的預建模塊的軟件包管理器。)