Perl getpwnam在sub中失败
因此,我尝试使用getpwnam()在sub中搜索etc/passwd中的用户名,如果存在,则返回true。我一直收到错误“在getpwnam中使用未初始化的值” 我正在将一个chomped字符串传递到此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是一个全局变量,可
@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";