in reply to Re^2: Best practice validating numerics with regex?
in thread Best practice validating numerics with regex?

In the spirit of TIMTOWTDI here's a couple of ways the get the length of the longest string.

#!/usr/bin/perl use strict; # https://www.perlmonks.org/?node_id=11155013 use warnings; use feature 'bitwise'; use List::AllUtils qw( reduce max ); $SIG{__WARN__} = sub { die @_ }; my $longest; my @strings = split ' ', <<END; one two three four five six seven eight nine ten END $longest = max map length, @strings; # maybe simplest print "longest: $longest\n"; $longest = max map y///c, @strings; # golf trick, one char shorter :) print "longest: $longest\n"; $longest = length reduce { $a |. $b } @strings; # or'ing strings print "longest: $longest\n"; $longest = reduce { max $a, length $b } 0, @strings; # internal max() print "longest: $longest\n"; # takes a lot of length()'s $longest = length reduce { length($a) >= length($b) ? $a : $b } @strin +gs; print "longest: $longest\n";

Replies are listed 'Best First'.
Re^4: Best practice validating numerics with regex?
by swl (Prior) on Oct 21, 2023 at 21:43 UTC

    Bitwise string assignment is another option.

    Both do the same thing. The second is just a bit more structurally similar to the other cases since it's on one line.

    my $str; $str |.= $_ for @strings; # more or'ing strings $longest = length $str; print "longest: $longest\n"; $longest = length do {my $s; $s |.= $_ for @strings; $s}; # more or'i +ng strings print "longest: $longest\n";

    Edit - fixed typo.