Perl CPAN中最长的字符串?

Perl CPAN中最长的字符串?,perl,Perl,显示如何查找数组中最长的字符串 这个功能在CPAN模块中是否可以像“最长的字符串”这样使用?要复制这段代码似乎很奇怪。也似乎是一个普遍有用的潜艇 为了进行比较,这里讨论了如何在Python中实现这一点。我想您会发现CPAN更适合于大量代码(即,多个行程序) 一、 例如,我更愿意让CPAN解决我的大问题,比如数据库访问或各种数值方法和数据结构。我不同意。查找最长的字符串是很容易实现的,也不是经常需要的。如果有什么区别的话,一个更通用的函数可能会进入(我想)List::MoreUtils。像这样:

显示如何查找数组中最长的字符串

这个功能在CPAN模块中是否可以像“最长的字符串”这样使用?要复制这段代码似乎很奇怪。也似乎是一个普遍有用的潜艇


为了进行比较,这里讨论了如何在Python中实现这一点。

我想您会发现CPAN更适合于大量代码(即,多个行程序)


一、 例如,我更愿意让CPAN解决我的大问题,比如数据库访问或各种数值方法和数据结构。

我不同意。查找最长的字符串是很容易实现的,也不是经常需要的。如果有什么区别的话,一个更通用的函数可能会进入(我想)
List::MoreUtils
。像这样:

my $longest = find_max { length } @array;

其中find_max有一个
(&@)
原型,并从链接的帖子中实现算法

注意
List::MoreUtils
的描述:

MoreUtils提供了一些简单的 但通常需要的功能 不打算进入的列表 列表::Util

列表::MoreUtils中的minmax子项可以工作,但是比较数值,而不是字符串长度。但是,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);
}
因此,如果OP发现自己经常使用find max,他可以使用他的许可证并修改MoreUtils以提供该功能


如果有更了解情况的人可以验证上述方法是否有效,请执行。

FWIW Perl 6解决方案只是:

my $longest = @list_of_strings.max: *.chars

无需模块:-)

您建议如何使用
minmax
返回长度最长的字符串?@ikegami:啊,谢谢您指出这一点。不知道为什么,但我有一个错误的假设,即minmax会自动处理字符串。我编辑了我的回复,希望能更有用。
my $longest = @list_of_strings.max: *.chars