這個問題在這里已經有了答案: 庫檔案和模塊有什么區別? (3 個回答) 昨天關門。
我撰寫需要其他 perl 腳本的 perl 腳本。“require”d 腳本包含子程式定義。(我還沒有達到撰寫自己的包或模塊的水平;我只需要檔案。)是否有一組公認的術語可以區分“祖先”腳本,即我在命令上呼叫的腳本行,以及在我呼叫“祖先”腳本時需要和決議的“后代”腳本?例如,在以下代碼片段中
use Cwd 'abs_path';
my $script=abs_path($0);
這是否出現在我呼叫的腳本中或我的檔案/腳本之一所需的檔案中都沒有關系;答案是一樣的。
除了“腳本”之外,還有一個變數名對編程社區的人來說更有意義嗎?也許更具體的術語?
以下頁面 https://perldoc.perl.org/variables/$0 似乎暗示“程式”比“腳本”更好?但這也是一個非常籠統的術語;它可能意味著任何事情。在我看來,我的整套必需檔案構成了程式。我當然一直在對它們進行編程。如果其中一個拋出例外或錯誤,整個事情就會死掉。
uj5u.com熱心網友回復:
這些術語并不是 Perl 特有的,盡管某些語言可能有更專業、更具體的定義。
程式和腳本基本上是一回事。幾乎沒有人會對使用這些術語中的任何一個感到困惑。有些人認為“腳本”一詞意味著它比實際情況要少,但這并不是什么大不了的事。但是,通常情況下,要么“做”某事。
您需要的東西通常稱為“庫”或“模塊”,它們往往是其他 Perl 檔案,它們提供某些東西供您使用,而不是直接做某事。除了提供可以在主程式中使用的東西之外,這些通常不會“做”任何事情。
一個程式可能需要另一個程式并讓它完成它的作業,但這不是一種常見的做法。
你問use Cwd 'abs_path';它應該出現在哪里。雖然無論你把它放在哪里都可以作業,但我傾向于將它包含在任何可以使用abs_path. 您包含的庫可能會決定將其洗掉或朝不同的方向發展。不要依賴庫來提取您將直接使用的部分。你可能會暫時擺脫它,但它更脆弱。
uj5u.com熱心網友回復:
在 Perl 的 4 天里,在我們擁有命名空間之前,我們將此類檔案稱為“庫”。
這些天來,他們沒有眾所周知的名字,因為這種不良做法沒有任何借口。
讓我們修復您的代碼。
在腳本中:
- 添加
use FindBin qw( $RealBin ); use lib $RealBin;. 這告訴 Perl 尋找與腳本相同的模塊目錄。
對于模塊的用戶:
- 使用
use SomeName;而不是do("SomeName.pl") or die $@ // $!;"加載所需的檔案。
對于模塊:
- 重命名為
SomeName.pm. - 添加
package SomeName;. - 添加
use Exporter qw( import ); @EXPORT = qw( sub1 sub2 ... );. - 您應該已經有一個尾隨
1. 如果沒有,請添加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418531.html
標籤:
下一篇:同一實體下的類繼承
