簡體   English   中英

為CPAN(和CorporatePAN)打包perl腳本的推薦方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM