システムのグループ情報を走査する
getgrent
はシステムのグループエントリーファイル(グループの登録情報を格納したファイルで通常は
/etc/group
)にアクセスし、グループ情報を返します。引数はありません。
# 0 1 2 3
my ( $name, $passwd, $gid, $members ) = getgrent;
No. | 変数 | 意味 | 実例 |
---|---|---|---|
0 | $name |
グループ名 | adm |
1 | $passwd |
パスワード (未使用のため通常はダミーの値が入る) | x |
2 | $gid |
グループID | 5 |
3 | $members |
グループに所属するユーザー名のリスト (スペース区切り) | syslog futomi |
getgrent
をいきなり呼び出すと、多くの環境では root グループの情報が返ってくるでしょう。
そのため、getgrent
を単独で使うことはありません。
getgrent
はイテレーターとして機能しますので、一般的には while
ループで使われます。
以下のサンプルコードは、システムに登録されたグループ名を一覧出力します。
while ( my @info = getgrent ) {
print $info[0], "\n";
}
getgrent
はスカラーコンテキストであれば、最初の項目であるグループ名のみを返します。
そのため、前述のサンプルコードは次のように書き換えても同じです。
while ( my $name = getgrent ) {
print $name, "\n";
}
なお、getpwent
は Windows では機能しませんので注意してください。