I love problems like this. My solution might not be the most efficient one, but this would be my first attempt:
#!/usr/bin/perl -w
use strict;
use warnings;
my ($Pattern, $c1, $c2) = '';
while( <DATA> )
{
/./ or next;
chomp;
for (my $i = 0; $i < length($_); $i++)
{
($c1 = vec($_, $i, 8)) > 32 or next;
$c2 = vec($Pattern, $i, 8);
$c2 = ($c2 < 33) ? $c1 : $c2;
vec($Pattern, $i, 8) = ($c1 == $c2) ? $c1 : 42;
}
print "\n INPUT = |$_|\nPattern = |$Pattern|\n";
}
print "\n\nFINAL RESULT:\n\n $Pattern\n";
__DATA__
/b/c/
a/b/cdx0/m2/b4/r_a_c1_4/w
a/b/c/p0/m0/b0/r_a_c1_0/q
a/b/c/p0/m0/b0/r_a_c1_1/q
a/b/c/p0/m0/b0/r_a_c1_2/q
a/b/c/p0/m0/b1/r_a_c1_0/q
a/b/c/p0/m0/b1/r_a_c1_1/q
a/b/c/p0/m0/b1/r_a_c1_2/q
a/b/c/p0/m0/b1/r_a_c1_0/q/g/w/t
/q
w/b/c/p0/m3/b2/r_a_c
d/e0/m2/b