我正在尝试使用Perl代码中的html标签打印一些哈希值。但我获得的不是值1
。当我尝试在sub
内打印哈希值时会发生这种情况。这是正确的方法吗?
package shembull;
%rhash= (
lbl_name => "L",
lbl_surname => "G",
txt_nameemri => "N",
txt_surname => "M",
btn_submit => "submit",
);
sub lbl_input {
my $value = @_;
return "<label>".$value."</label>";
}
sub txt_input {
my $value = @_;
return "<textarea>".$value."</textarea>";
}
sub btn_input {
my $value = @_;
return"<button>".$value."</button>";
}
foreach my $tmp (keys %rhash){
if($tmp =~/lbl/){
print lbl_input ($rhash{$tmp});
}
elsif($tmp =~/txt/){
print txt_input ($rhash{$tmp});
}
elsif($tmp =~/btn/){
print btn_input ($rhash{$tmp});
}
}
原因可能是什么?谢谢!
答案 0 :(得分:4)
my $value = @_;
这会将@_
中的元素数量放在$value
中 - 在标量上下文中评估列表会返回其元素数。
您可以改用:
my ($value) = @_;
答案 1 :(得分:0)
@_ in context scalar返回@_包含的项目或元素的数量。
这里有一个参考:http://perlmaven.com/scalar-and-list-context-in-perl