User::pwent - by-name interface to Perl's built-in getpw*() functions

- NAME
- SYNOPSIS
- DESCRIPTION
- NOTE
- AUTHOR

# NAME

User::pwent - by-name interface to Perl's built-in getpw*() functions

# SYNOPSIS

     use User::pwent;
     $pw = getpwnam('daemon') or die "No daemon user";
     if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?$# ) {
         print "gid 1 on root dir";
     }

     use User::pwent qw(:FIELDS);
     getpwnam('daemon') or die "No daemon user";
     if ( $pw_uid == 1 && $pw_dir =~ m#^/(bin|tmp)?$# ) {
         print "gid 1 on root dir";
     }

     $pw = getpw($whoever);

# DESCRIPTION

This module's default exports override the core `getpwent(),` `getpwuid(),` and `getpwnam()` functions, replacing them with versions that return ``User::pwent'' objects. This object has methods that return the similarly named structure field name from the C's passwd structure from pwd.h; namely name, passwd, uid, gid, quota, comment, gecos, dir, and shell.

You may also import all the structure fields directly into your namespace as regular variables using the :FIELDS import tag. (Note that this still overrides your core functions.) Access these fields as variables named with a preceding `pw_` in front their method names. Thus, `$passwd_obj->shell()` corresponds to `$pw_shell` if you import the fields.

The `getpw()` funtion is a simple front-end that forwards a numeric argument to `getpwuid()` and the rest to `getpwnam().`

To access this functionality without the core overrides, pass the use an empty import list, and then access function functions with their full qualified names. On the other hand, the built-ins are still available via the `CORE::` pseudo-package.

# NOTE

While this class is currently implemented using the Class::Struct module to build a struct-like class, you shouldn't rely upon this.

# AUTHOR

Tom Christiansen