Perl getpwnam在sub中失败

Perl getpwnam在sub中失败,perl,getpwnam,Perl,Getpwnam,因此,我尝试使用getpwnam()在sub中搜索etc/passwd中的用户名,如果存在,则返回true。我一直收到错误“在getpwnam中使用未初始化的值” 我正在将一个chomped字符串传递到此sub。我尝试使用@name=getpwnam($\u0]) 和@name=getpwnam($) 我知道,我传递的字符串作为用户名存在于/etc/passwd中,当它不在sub中时,代码可以工作。如果您将用户名作为参数传递,那么您应该检查@的第一个元素,即$[0] $\uuu是一个全局变量,可

因此,我尝试使用getpwnam()在sub中搜索etc/passwd中的用户名,如果存在,则返回true。我一直收到错误“在getpwnam中使用未初始化的值”

我正在将一个chomped字符串传递到此sub。我尝试使用
@name=getpwnam($\u0])
@name=getpwnam($)


我知道,我传递的字符串作为用户名存在于/etc/passwd中,当它不在sub中时,代码可以工作。

如果您将用户名作为参数传递,那么您应该检查
@
的第一个元素,即
$[0]

$\uuu
是一个全局变量,可以方便地用作隐式
foreach
变量,函数可以在未向其发送参数的情况下使用它。实际上,这是大多数perl核心函数的常见行为,如果没有给出显式参数,这些函数将采用
$\ucode>

sub nameSearch {
  my ($search) = @_;
  $search = $_ if !@_;

  my @name = getpwnam($search);

  return @name ? 1 : 0;
}

print nameSearch("user") ? "exist" : "doesn't exist";

您能告诉我们您是如何调用此
,以及它与据称有效的内联版本相比如何?另外,为什么
$search
@name
不是
子项的本地项?例如,
my$search
my@name
?我对Perl有点不在行,没有意识到局部变量就是这样被调用的!谢谢你引起我的注意!
sub nameSearch {
  my ($search) = @_;
  $search = $_ if !@_;

  my @name = getpwnam($search);

  return @name ? 1 : 0;
}

print nameSearch("user") ? "exist" : "doesn't exist";