[英]What is the recommended way to package perl scripts for CPAN (and CorporatePAN)?
最近我看了CPAN上的一個模塊,它帶有一個要安裝的腳本,這讓我很奇怪。 將腳本包含在最終應該使用公共CPAN的包中的推薦方法是什么?如果對內部CPAN服務器上發布的包有任何不同的建議?
該腳本如下所示:
#!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
兩個問題
我是否正確理解eval部分是不必要的? 這將在安裝過程中由CPAN客戶端嵌入,在Windows上安裝時會有很大差異。
什么是推薦的sh-bang線? 那會嗎?
#!/usr/bin/env perl
而不是上述?
只是用
#!/usr/bin/perl
(或者,可選地,無論perl
在開發機器上的路徑是什么。)
當Module :: Build或MakeMaker安裝你的腳本時,它會改變#!
用於匹配正在安裝模塊的perl
行。 它還將添加“eval exec”行,除了在Windows下,它將創建一個.bat
文件。 (CPAN客戶端與此無關。)
如果你使用
#!/usr/bin/env perl
然后安裝程序將不會意識到這是一個Perl腳本,並且不會修改#!
線。
在安裝發行版時,它正在為某個特定的perl安裝,並且應該明確設置#! 使用該perl(在$Config{startperl}
)。 據我所知,所有模塊安裝程序都會為您完成此操作。 (更新:如cjm所述,僅當#!as distributed運行perl,而不是env。)
傳統上包含eval資源以自動使用perl,即使使用sh scriptname
調用腳本也是如此。 這是無害的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.