Data::FormValidator + α
http://d.hatena.ne.jp/tomyhero/20070803/1186106207
上記の実装を以下に修正
- required_only_oneの場合、missing にするのではなく、最初の一つ目だけを取るように修正
if ( ref $valid{$field} eq 'ARRAY' ) { if ( exists $required_only_one{$field} or exists $optional_only_one{$field} ) { if( (defined $valid{$field}->[0] and length $valid{$field}->[0] and $valid{$field}->[0] !~ /^\x00$/) ){ my $data = $valid{$field}->[0]; delete $valid{$field}; $valid{$field} = $data; } else { delete $valid{$field}; } next; } for (my $i = 0; $i < scalar @{ $valid{$field} }; $i++) { $valid{$field}->[$i] = undef unless (defined $valid{$field}->[$i] and length $valid{$field}->[$i] and $valid{$field}->[$i] !~ /^\x00$/); } # If all fields are empty, we delete it. delete $valid{$field} unless grep { defined $_ } @{$valid{$field}}; }