---
name: "User::pwent"
section: "3pm"
platform: "linux"
package: "perl-5.004-doc"
version: "5.004.05-6"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/User::pwent/3pm"
---

# User::pwent(3pm)

by-name interface to Perl's built-in getpw\*() functions

## 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
