patterns---------------- ( [0, "..e......."], [11, "..m......."], [22, "..e......."], [33, "..r......."], [44, "..o......."], [55, ".m........"], [55, "..i......."], [55, "...d......"], [55, "....d....."], [55, ".....i...."], [55, "......e..."], [55, ".......s.."], [66, "..d......."], #### my $underpat = qr/[^@under@tiles]/; say "underpat is $underpat"; my @words = grep { length $pat == length $_ && !/$underpat/ && /^$pat$/ && ( ( $old ^ $_ ) !~ /^\0+\]$/ ) # adding just an 's' not allowed #### underpat is (?^u:[^mh h i m q r t]) underpat is (?^u:[^mh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^e m e r o i dh h i m q r t]) underpat is (?^u:[^dh h i m q r t]) underpat is (?^u:[^dh h i m q r t]) underpat is (?^u:[^dh h i m q r t]) #### say "new mask is $newmask"; substr $heights, $pos, length $highs, ( $highs & $newmask ) =~ tr/0-4/1-5/r | ( $highs & ~$newmask );