1

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});
    }
}

理由は何ですか?ありがとうございました !

4

2 に答える 2

4
my $value = @_;

これにより、要素の数が入力されます。スカラー コンテキストでリストを評価すると、その要素の数が返されます@_$value

代わりにこれを使用できます:

my ($value) = @_;
于 2013-07-21T16:05:29.367 に答える
0

私の $value=shift; になる可能性があります。

@_ in context scalar は、@_ に含まれる項目または要素の数を返します。

ここに参照があります: http://perlmaven.com/scalar-and-list-context-in-perl

于 2013-07-21T21:16:45.087 に答える