內容

名稱

Net::protoent - Perl 內建 getproto*() 函式的按名稱介面

語法

use Net::protoent;
my $p = getprotobyname(shift || 'tcp') || die "no proto";
printf "proto for %s is %d, aliases are %s\n",
   $p->name, $p->proto, "@{$p->aliases}";

use Net::protoent qw(:FIELDS);
getprotobyname(shift || 'tcp') || die "no proto";
print "proto for $p_name is $p_proto, aliases are @p_aliases\n";

說明

此模組的預設匯出會覆寫核心 getprotoent()、getprotobyname() 和 getnetbyport() 函式,並以傳回「Net::protoent」物件的版本取代它們。它們採用預設的第二個引數「tcp」。此物件有方法可以傳回與 C 的 protoent 結構中來自 netdb.h 的結構欄位名稱相同的內容;也就是 name、aliases 和 proto。aliases 方法傳回陣列參考,其餘傳回純量。

您也可以使用 :FIELDS 匯入標籤將所有結構欄位直接匯入您的命名空間作為一般變數。(請注意,這仍然會覆寫您的核心函式。)使用以 p_ 開頭命名的變數來存取這些欄位。因此,如果您匯入欄位,$proto_obj->name() 會對應到 $p_name。陣列參考可用作一般陣列變數,例如 @{ $proto_obj->aliases() } 會變成 @p_aliases。

getproto() 函式是一個簡單的前端,會將數字引數轉發給 getprotobyport(),而其餘部分則轉發給 getprotobyname()。

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

注意

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

作者

Tom Christiansen