2012-06-15 101 views
2

我有一個腳本foo.pl,其sheebang行指向Perl 5.6二進制文件。 foo.pl「需要另一個腳本bar.pl,該腳本擁有帶有5.10版本的sheebang行。Perl 5.6腳本需要(調用)Perl 5.10腳本

有沒有人遇到過這種情況?任何幫助,將不勝感激。

P.S.由於項目中存在依賴關係,因此無法將使用5.6的腳本更改爲最新的Perl版本。所以,我需要和那裏的一切生活在一起。

+0

對'需要'一個腳本沒有意義。 ['do'](http://perldoc.perl.org/functions/do.html)應該用於沒有'package'的文件。 – ikegami

+1

請注意,在shebang中指向5.10安裝Perl並不會使其成爲「Perl 5.10腳本」。這隻意味着如果系統要求執行該腳本,系統將使用該Perl安裝。 – ikegami

+0

我想知道的是,「被調用」的腳本是否會使用Perl 5.6或5.10編譯? – Gentle

回答

0

require無論shebang如何說,當前解釋器5.6都需要d腳本。這隻對「啓動」腳本很重要。如果該腳本使用語法,功能或其他方式取決於在5.6以上的Perl下運行,那麼很明顯,它可能會完全失敗,或者會導致錯誤的結果。

+0

你的意思是Bar.pl(require'd腳本)會失敗,我說得對嗎? – Gentle

+0

是的,如果它真的取決於在5.10下運行。實際上,如果它有明確的「使用5.10;」的內容,它在編譯時會失敗。 –

+0

它沒有明確的「使用5.10」。但是,某些Perl 5.10特定功能可能無法正常工作,那是什麼意思? – Gentle

0

bar.pl shebang中的前導散列(#)將使foo.pl'require'bar.pl.中的該行看起來像註釋。

你應該沒有問題。

+2

Perl實際上處理'#!'行,所以聲稱它被忽略,因爲註釋不成立。嘗試創建一個包含'#!/ bin/echo foo'的文件,然後使用'perl script.pl'運行該腳本。或者嘗試創建一個包含'#!/ usr/bin/perl -w'的文件,並注意即使在使用'perl script.pl'運行該腳本時警告也是如此。 – ikegami

+0

好吧,廢話。我的回答被撤回。 –

+0

您實際上可以通過刪除它來取消它。 –