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

use strict;
sub is_valid {
my ($self, $value) = @_;
my $len = length $value;
my $args = $self->args;
my ($min, $max) = ref $args eq 'ARRAY' ? @{$args} : ($args);
return $len eq $min ? 1 : 0 unless $max;
return $len >= $min && $len <= $max ? 1 : (0, [$min, $max, $len]);
}
1;
__END__
=head1 NAME
Input::Validator::Constraint::Length - Length constraint
=head1 SYNOPSIS
$validator->field('name')->length(10);
$validator->field('name')->length(1, 40);
=head1 DESCRIPTION
Checks whether the value is exactly C<n> characters length, or is between
C<n, m> values.
=head1 METHODS
=head2 C<is_valid>
Validates the constraint.
=head1 SEE ALSO
L<Input::Validator>, L<Input::Constraint>
=cut