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 ...
Get Programming Perl, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.