Perl-print хэш-значения при совпадении ключа

Я пытаюсь напечатать некоторые значения хэша, используя теги html внутри кода Perl. Но я получаю вместо значений 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 ответа

my $value = @_;

Это поместит количество элементов @_ в $value - вычисление списка в скалярном контексте возвращает его количество элементов.

Вы можете использовать это вместо этого:

my ($value) = @_;


может быть мой $ value = shift;

@_ в контексте скалярного возвращает количество элементов или элементов, которые содержит @_.

здесь ссылка: http://perlmaven.com/scalar-and-list-context-in-perl

licensed under cc by-sa 3.0 with attribution.