http://www.perlmonks.org?node_id=274373


in reply to Re: Re: Re: Re: Find common prefix from a list of strings
in thread Find common prefix from a list of strings

Whadaheck?
...
The problem was in the

$combined =~ s/[^\x00].*//;
I tried to print the variable with</code> print "\$combined=",unpack("H*",$combined)," ($combined)\n"; </code> and was really surprised:
¢¼combined=0c0d060a183672756e33 (”Ļ ”č6run3) $combined=0a183672756e33 ( ”č6run3) Prefix is "model4r"
(I'd be even more surprised if this went through correctly.)

Guess what was the problem ... well the .* did not match everything. I forgot that without /s dot doesn't match newlines. So the fix is very simple

... $combined =~ s/[^\x00].*//s; ...
Actually thinking about this it would probably be better to change the last three lines to:
$combined =~ /^(\x00*)/; my $prefix = substr($first, 0, length($1)); print qq{Prefix is "$prefix"};

I should have tested my code better :-(

Jenda
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
   -- Rick Osborne

Edit by castaway: Closed small tag in signature