User::pwent
use User::pwent; # Default overrides built-ins only.
$pw = 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); # Accepts both string or number.
$real_shell = $pw->shell || '/bin/sh';
for (($fullname, $office, $workphone, $homephone) =
split /\s*,\s*/, $pw->gecos)
{
s/&/ucfirst(lc($pw->name))/ge;
}
use User::pwent qw(:FIELDS); # Sets globals in current package.
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/pw_has/;
if (pw_has(qw[gecos expire quota])) { …. }
if (pw_has("name uid gid passwd")) { …. }
printf "Your struct pwd supports [%s]\n", scalar pw_has();By default, this module's exports override the core
getpwent, getpwuid, and
getpwnam functions, replacing them with versions
that return a User::pwent object (or
undef on failure). It is often better to use the
module than the core functions it replaces, because the built-ins
overload or even omit various slots in the return list in the name of
backward compatibility.
The returned object has methods that access the similarly named
structure field name from the C's passwd structure
from pwd.h, stripped of their leading
"pw_" parts, namely name,
passwd, uid,
gid, change,
age, quota,
comment, class,
gecos, dir,
shell, and expire. The
passwd, gecos, and
shell fields are tainted. You may also import the structure fields into your ...