我正在寻找一种使用Perl将uid(代表系统用户的唯一编号)映射到用户名的方法。
请不要建议grep
/ etc / passwd:)
修改
作为澄清,我并不是在寻找一个明确阅读/ etc / passwd 的解决方案。我意识到,在引擎盖下,任何解决方案最终都会这样做,但我正在寻找一个库函数来为我做这件事。
答案 0 :(得分:8)
标准函数getpwuid
与同一个C函数一样,根据其ID获取用户信息。不需要use
:
my ($name) = getpwuid(1000);
print $name,"\n";
虽然它最终读取/etc/passwd
文件,但使用标准接口对于其他用户来说更加清晰,更不用说它可以为您节省一些按键。
答案 1 :(得分:1)
读取/ etc / passwd并将UID哈希到登录名。
编辑:
$uid = getpwnam($name);
$name = getpwuid($num);
$name = getpwent();
$gid = getgrnam($name);
$name = getgrgid($num;
$name = getgrent();
如您所见,无论您选择哪一个,系统调用都从/ etc / passwd读取(请参阅this以供参考)
答案 2 :(得分:0)
实际上我建议建立一个基于/ etc / passwd的哈希:-)这应该很好用,因为用户ID必须是唯一的。