私は各フィールド名がキーになるハッシュとして入ってくるHTMLフォームフィールドデータを持っています&フィールド値はハッシュ値...あなたの標準CGIモジュールの出力から:Perlのハッシュキー名のカウンタ変数を使用
my $query = new CGI;
my %formdata = $query->Vars;
今回私は、各数字の接尾辞(「NAME2「の」NAME1」...「SIZE1」「size2に」など)を持つ複数のフォームフィールドのコレクションで働いています。これよりも数字順に、それらのグループをループするためのカウンタを使用するより良い方法はありますか?
for (my $i = 1; $i < 10; $i++) {
print " Name $i: " . $formdata{"name$i"} . "\n";
print " Size $i: " . $formdata{"size$i"} . "\n";
}
...これは悪いことではありませんが、構文が簡単ですか?私。このような(しかし、これは動作しません - は、パッケージまたはオブジェクト参照なしでメソッド「名前」を呼び出すことはできません):
print " Name $i: $formdata{name$i}\n";
「name $ i $ formdata {$ varname}」という名前の印刷から別の方法があるかどうかはわかりませんでした。 _entire_キー名が文字列変数に作られたときに二重補間なしで動作するようです... – Wick
@Wick:なぜ "" $ formdata {$ varname} "'が誤解していると思いますか?実際には '$ varname'を補間しません。 '$ varname'を通常の文字列式にするだけです。それは、その式の値をキーとして使用します。ダブルクォートの外側でも '$ formdata {$ varname} 'を書くことができます。逆に '$ formdata {'name'のようなものを書くことができます。 $ i} 'を二重引用符で囲みます。それは理にかなっていますか?だから 'qq {$ formdata {" name $ i "}}'は "二重補間"をしていません。 '$ i'をちょうど1回補間し、補間する。 '$ formdata {'name6'}'は一度だけです。 – ruakh
ああ、ありがとう、それはトン&非常にはっきりと説明します。ほんとうにありがとう! – Wick