3

我想在脚本本身中提取用户名,执行 perl 脚本。

我正在执行whoamiperl 中的 linux 命令,如下所示,它运行良好。

my $whoami = `whoami`;
chomp $whoami;
print $whoami;

我的目的是避免从 perl 脚本调用系统命令。因此,我正在寻找仅 Perl的解决方案。我想知道是否有任何可用的 CPAN 模块可以提取系统信息。

您在这方面的建议将不胜感激。

4

3 回答 3

8
perl -le 'print scalar getpwuid $<'
于 2013-10-07T11:02:42.147 回答
3

Perl 直接映射到系统getpw*函数。

这些例程与系统 C 库中的对应例程相同。在列表上下文中,各种 get 例程的返回值如下:

($name,$passwd,$uid,$gid, $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*

——从perldoc -f getpwuid

使用getpwuidwith$<作为参数(根据perldoc perlvar是“此进程的真实 uid”,也可用作$REAL_USER_IDand $UID)并获得第一个返回值。

于 2013-10-07T11:19:34.397 回答
2

您可能应该看一下哈希%ENV。它包含有关运行脚本的环境的有用信息。

获取用户名的一个示例(在 Windows 中)是:

perl -E "say $ENV{'USERNAME'}"

对于bash 替代USERNAME或。LOGNAMEUSER

于 2013-10-07T11:16:07.913 回答