匹配键时Perl-打印哈希值

时间:2013-07-21 16:02:45

标签: perl

我正在尝试使用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});
    }
}

原因可能是什么?谢谢!

2 个答案:

答案 0 :(得分:4)

my $value = @_;

这会将@_中的元素数量放在$value中 - 在标量上下文中评估列表会返回其元素数。

您可以改用:

my ($value) = @_;

答案 1 :(得分:0)

可能是 我的$ value = shift;

@_ in context scalar返回@_包含的项目或元素的数量。

这里有一个参考:http://perlmaven.com/scalar-and-list-context-in-perl