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

Albannach has asked for the wisdom of the Perl Monks concerning the following question:

Given: a list of strings, in my case a list of filenames (log files from a simulation package), e.g. @files = qw(model4run1 model2run1 model4run2 model1run1)
Output: the set of characters common to the begining of all the strings, in the above example "model"

I am having a mental block on this little snippet which, though working, simply does not look elegant to me yet. Something tells me it could be a simple map application, but my mental map interface seems to be read-only. I'd appreciate any and all suggestions, comments, or even golf.

my $posn = -1; my $same = 1; while(defined $same){ die if $posn > length $files[0]; my $chr = substr($files[0], ++$posn, 1); for my $name (1..$#files) { undef $same and last if(substr($files[$name], $posn, 1) ne $chr or length $files[$name] < $posn); } } print 'Prefix is "', substr($files[0], 0, $posn), '"';

--
I'd like to be able to assign to an luser