Обратите внимание на описание List::MoreUtils
:
List :: MoreUtils предоставляет некоторые тривиальные, но обычно необходимые функции для списков, которые не будут идти в List :: Util.
Sub minmax в List :: MoreUtils будет работать, но сравнивать числовые значения вместо длин строк.Однако minmax можно довольно легко адаптировать для сравнения длин аргументов.
sub minmax_stringlength (@) {
return unless @_;
my $min = my $max = $_[0];
for ( my $i = 1; $i < @_; $i += 2 ) {
if ( length($_[$i-1]) <= length($_[$i]) ) {
$min = $_[$i-1] if length($min) > length($_[$i-1]);
$max = $_[$i] if length($max) < length($_[$i]);
} else {
$min = $_[$i] if length($min) > length($_[$i]);
$max = $_[$i-1] if length($max) < length($_[$i-1]);
}
}
if ( @_ & 1 ) {
my $i = $#_;
if (length($_[$i-1]) <= length($_[$i])) {
$min = $_[$i-1] if length($min) > length($_[$i-1]);
$max = $_[$i] if length($max) < length($_[$i]);
} else {
$min = $_[$i] if length($min) > length($_[$i]);
$max = $_[$i-1] if length($max) < length($_[$i-1]);
}
}
return ($min, $max);
}
Заметьте, я не писал выше, я просто добавил длину в сравнениях, где до сравнения сравнивалось простое число,К сожалению, я не смог проверить это, потому что я не знаю, как работает AutoLoader, и я продолжал получать:
Use of inherited AUTOLOAD for non-method List::MoreUtils::minmax_stringlength() is deprecated at script.pl line 9.
Так что, если ОП находит, что очень часто использует find max, он может просто использовать свою лицензию и модифицировать MoreUtils, чтобыобеспечьте эту функциональность.
Если кто-то более знающий может проверить, что вышеперечисленное сработает, сделайте это.