2011-07-22 30 views
1

我試圖構建一個perl包(模塊+腳本)。使我的腳本添加'exec'行

我Makefile.PL具有以下包括我的腳本

EXE_FILES => [ 
       'bin/somescript1', 
      ], 

但安裝後腳本,它增加了以下的安裝腳本的開頭。

eval 'exec /usr/bin/perl -S $0 ${1+"[email protected]"}' 
    if 0; # not running under some shell 

它爲什麼這樣做,我可以讓它不包括?

回答

1

當ExtUtils :: Makemaker安裝您的腳本時,它將修改爲shebang行以使用您用來構建分發的perl的路徑。這樣,當您調用腳本時,它將使用您用來安裝依賴關係的相同perl

此外,它增加了exec行。如果由於某種原因,系統在shell中而不是perl中啓動程序,exec會將其切換爲perl

不要說話。這隻會幫助你。

但是,如果您想覆蓋它,您必須重寫安裝程序的Makemaker部分。如果你想切斷你的手臂,你必須自己找出如何做到這一點。這些都在Makemaker文檔中。

1

您不應該擔心這些行。這是一種讓您的腳本可以同時運行Perl和shell的方式,使其具有超便攜性。

0

如果將shebang行設置爲#!/ usr/bin/env perl,則可以利用ExtUtils :: MM_Unix中的錯誤,並且在安裝時不會添加eval行。如果安裝主機沒有可用的/ usr/bin/env,這將會中斷。