システムのユーザー情報を走査する
getpwent はシステムのパスワードファイル(ユーザーの登録情報を格納したファイルで通常は
/etc/passwd)にアクセスし、ユーザー情報を返します。引数はありません。
# 0 1 2 3 4
my ( $name, $passwd, $uid, $gid, $quota,
$comment, $gcos, $dir, $shell, $expire ) = getpwent;
# 5 6 7 8 9
| No. | 変数 | 意味 | 実例 |
|---|---|---|---|
| 0 | $name |
ユーザー名 | futomi |
| 1 | $passwd |
パスワード (ハッシュ値やダミー文字になっていることがほとんどです) | x |
| 2 | $uid |
ユーザーID | 1000 |
| 3 | $gid |
グループID | 1000 |
| 4 | $quota |
クォータ情報 | |
| 5 | $comment |
コメント | |
| 6 | $gcos |
ユーザーの実名 | Futomi Hatano |
| 7 | $dir |
ホームディレクトリ | /home/futomi |
| 8 | $shell |
ログインシェル | /bin/bash |
| 9 | $expire |
有効期限 |
getpwent をいきなり呼び出すと、多くの環境ではスーパーユーザー (root) の情報が返ってくるでしょう。
そのため、getpwent を単独で使うことはありません。
getpwent はイテレーターとして機能しますので、一般的には while ループで使われます。
以下のサンプルコードは、システムの登録ユーザーのユーザー名を一覧出力します。
while ( my @user_info = getpwent ) {
print $user_info[0], "\n";
}
getpwent はスカラーコンテキストであれば、最初の項目であるユーザー名のみを返します。
そのため、前述のサンプルコードは次のように書き換えても同じです。
while ( my $name = getpwent ) {
print $name, "\n";
}
なお、getpwent は Windows では機能しませんので注意してください。