內容

名稱

User::grent - Perl 內建 getgr*() 函式的按名稱介面

語法

use User::grent;
my $gr = getgrgid(0) or die "No group zero";
if ( $gr->name eq 'wheel' && @{$gr->members} > 1 ) {
    print "gid zero name wheel, with other members";
} 

use User::grent qw(:FIELDS);
getgrgid(0) or die "No group zero";
if ( $gr_name eq 'wheel' && @gr_members > 1 ) {
    print "gid zero name wheel, with other members";
} 

my $gr = getgr($whoever);

說明

此模組的預設匯出會覆寫核心 getgrent()、getgrgid() 和 getgrnam() 函式,並以傳回「User::grent」物件的方式取代它們。此物件有方法可以傳回 C 的 grp.h 中 passwd 結構中類似名稱的結構欄位名稱;也就是 name、passwd、gid 和 members(而非 mem)。前三個會傳回純量,最後一個會傳回陣列參考。

您也可以使用 :FIELDS 匯入標籤,將所有結構欄位直接匯入您的命名空間中,作為一般變數。(請注意,這仍然會覆寫您的核心函式。)使用以 gr_ 為字首命名的變數來存取這些欄位。因此,如果您匯入欄位,$group_obj->gid() 會對應到 $gr_gid。陣列參考可用作一般陣列變數,因此 @{ $group_obj->members() } 會變成單純的 @gr_members。

getgr() 函式是一個簡單的前端,會將數字引數轉送給 getgrgid(),並將其餘的轉送給 getgrnam()。

若要存取此功能而不覆寫核心,請傳遞一個空的匯入清單給 use,然後使用其完整限定名稱存取函式。另一方面,內建函式仍可透過 CORE:: 偽套件取得。

注意

雖然此類別目前是使用 Class::Struct 模組來建構類結構類別,但您不應依賴此方式。

作者

湯姆·克里斯蒂安森