Hmm, first try,
Regex::PreSuf#!/usr/bin/perl --
use Regex::PreSuf;
print presuf(qw[
abcpwbln08
abcpwbln07
abcpwbnn10
abcpwbnn06
adesicln09
adesicln08
adesicln01
adesicnn05
]);
__END__
a(?:bcpwb(?:ln0[78]|nn(?:06|10))|desic(?:ln0[189]|nn05))
2nd try
Regexp::Assemble
#!/usr/bin/perl --
use strict;
use warnings;
use Regexp::Assemble;
my $ra = Regexp::Assemble->new;
$ra->add( quotemeta $_) for qw[
abcpwbln08
abcpwbln07
abcpwbnn10
abcpwbnn06
adesicln09
adesicln08
adesicln01
adesicnn05
];
print $ra->re;
__END__
(?-xism:a(?:bcpwb(?:nn(?:06|10)|ln0[78])|desic(?:ln0[189]|nn05)))
3rd try
Regexp::Assemble OR Regex::PreSuf site:perlmonks.org
4th maybe String::Glob::Permute