鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

HTML::FillInFormを学ぶ

HTML::FillInForm 1.06 のバグ

ちょっと使いたくなってみたぁ・・ 配列のときの動きが良く分からないので、試してみよう。

use strict;
use HTML::FillInForm;

my $hidden_form_in = qq{<INPUT TYPE="TEXT" id="foo_0" name="foo" value="nada">
<input type="hidden" id="foo_1" name="foo" value="nonda"/>};

my %fdat = (foo => ['bar1','bar2']
    );

my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$hidden_form_in,
                    fdat => \%fdat);
print $output;

実行結果は以下のようになりました。

<input value="bar1" name="foo" id="foo_0" type="TEXT">
<input value="bar2" name="foo" id="foo_1" type="hidden" />

うまく行った。

じゃ、これだとどうだ。

use strict;
use HTML::FillInForm;

my $hidden_form_in = qq{<INPUT TYPE="TEXT" id="foo[0]" name="foo" value="nada">
<input type="hidden" id="foo[1]" name="foo" value="nonda"/>};

my %fdat = (foo => ['bar1','bar2']
    );

my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$hidden_form_in,
                    fdat => \%fdat);
print $output;

これもうまくいった。

<input value="bar1" name="foo" id="foo[0]" type="TEXT">
<input value="bar2" name="foo" id="foo[1]" type="hidden" />

じゃ、これだとどうだ。

use strict;
use HTML::FillInForm;

my $hidden_form_in = qq{<INPUT TYPE="TEXT" id="are" name="foo" value="nada">
<input type="hidden" id="dore" name="foo" value="nonda"/>};

my %fdat = (foo => ['bar1','bar2']
    );

my $fif = new HTML::FillInForm;
my $output = $fif->fill(scalarref => \$hidden_form_in,
                    fdat => \%fdat);
print $output;

これもうまくいった。

<input value="bar1" name="foo" id="are" type="TEXT">
<input value="bar2" name="foo" id="dore" type="hidden" />

nameを同じにして、idはFillinでは意味なく、HTMLの記述順と 配列の順番が同じように出力されるだけなんだなぁ。