システムのグループ情報を走査する
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 では機能しませんので注意してください。