我正在尝试编写打印/ etc / passwd用户的Perl CGI脚本,但是当我打开CGI时,我的滚动列表只打印出多行:
"HASH(0x27836d8)"
这是我的代码,我抓住了passwd并将其打印到滚动列表中。任何人都可以帮助我正确打印到滚动列表吗?
setpwent();
while (@list = getpwent())
{
($LOGIN,$PASSWORD,$UID,$GID,$QUOTA,$COMMENT,$GECOS,$HOMEDIR,$SHELL) = @list[0,1,2,3,4,5,6,7,8];
if( $UID >= 1001 )
{
push @users, { login => "$LOGIN"};
}
}
endpwent();
print scrolling_list(-name=>'user_list',
-values=>[@users],
-size=>15);
答案 0 :(得分:3)
你给列表提供了一堆哈希引用,以便显示出来的内容。变化
push @users, { login => "$LOGIN"};
到
push @users, $LOGIN;
use strict;
use warnings;
...
setpwent();
while (my @list = getpwent()) {
my ($user, $uid) = @list[2, 3];
push @users, $user
if $ui >= 1001;
}
endpwent();
print scrolling_list(
-name => 'user_list',
-values => \@users,
-size => 15,
);
答案 1 :(得分:2)
如the CGI perldoc中所述,使用-values传递的内容应该是列表引用,但是您已经创建了一个列表引用的哈希列表(由于您使用上面的花括号)。这是一个固定版本:
setpwent();
while (@list = getpwent())
{
($LOGIN,$PASSWORD,$UID,$GID,$QUOTA,$COMMENT,$GECOS,$HOMEDIR,$SHELL) = @list[0,1,2,3,4,5,6,7,8];
if( $UID >= 1001 )
{
push @users, $LOGIN;
}
}
endpwent();
print scrolling_list(-name=>'user_list',
-values=>\@users,
-size=>15);