The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/local/bin/perl
use strict;
my $html = qq[<form><input type="text" name="one" value="all wrong"><input type="text" name="two" class="existing" value="worse"><input type="text" name="three" class="invalid" value="already bad"><select name="four"><option value="1">Foo</option><option value="2">Boo</option></select><textarea name="five"></textarea></form>];
{
my $result =
HTML::FillInForm->new->fill(scalarref => \$html,
fdat => {two => "new val 2"},
invalid_fields => ['one']);
my $p = HTML::TokeParser->new(\$result);
my $one = $p->get_tag('input')->[1];
is($one->{name}, 'one');
is($one->{class}, 'invalid');
my $two = $p->get_token->[2];
is($two->{name}, 'two');
isnt($two->{class},'invalid');
}
{
my $result = HTML::FillInForm->new->fill(scalarref => \$html,
fdat => {two => "new val 2"},
invalid_fields => ['one', 'two', 'three', 'four', 'five']);
my $p = HTML::TokeParser->new(\$result);
my $one = $p->get_tag('input')->[1];
is($one->{name}, 'one');
is($one->{class}, 'invalid');
my $two = $p->get_token->[2];
is($two->{name}, 'two');
is($two->{class},'existing invalid');
my $three = $p->get_token->[2];
is($three->{name},'three');
is($three->{class},'invalid');
my $four = $p->get_token->[2];
is($four->{name}, 'four');
is($four->{class}, 'invalid');
my $five = $p->get_tag('textarea')->[1];
is($five->{name},'five');
is($five->{class},'invalid');
}
{
my $result = HTML::FillInForm->new->fill(scalarref => \$html,
fdat => {two => "new val 2"},
invalid_fields => ['one', 'three'],
invalid_class => "funky");
my $p = HTML::TokeParser->new(\$result);
my $one = $p->get_tag('input')->[1];
is($one->{name}, 'one');
is($one->{class}, 'funky');
my $two = $p->get_token->[2];
is($two->{name}, 'two');
is($two->{class},'existing');
my $three = $p->get_token->[2];
is($three->{name},'three');
is($three->{class},'invalid funky');
}
done_testing();