# however, these assume strings don't contain \0 sub lcp_v4 { my ($e, $s) = ("", @_); $e |= $_ ^ $s for @_; $e =~ m/^\0*/; substr($s, 0, $+[0]); } sub lcp_v5 { my ($a, $b) = (sort @_)[0,-1]; ($a ^ $b) =~ m/^\0*/; substr($a, 0, $+[0]); } use List::Util qw(minstr maxstr); sub lcp_v6 { my ($a, $b) = (&minstr, &maxstr); ($a ^ $b) =~ m/^\0*/; substr($a, 0, $+[0]); }