c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my @WORDS = qw(trying helping doing do xdo help hel xhelp); my $s = 'help'; ;; my @hits = grep m{ \A \Q$s\E }xms, @WORDS; dd \@hits; ;; $s = 'do'; @hits = grep index($_, $s) == 0, @WORDS; dd \@hits; ;; dd \@WORDS; " ["helping", "help"] ["doing", "do"] ["trying", "helping", "doing", "do", "xdo", "help", "hel", "xhelp"] #### c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my @words = qw(he xhelper hello hel help helper helping); my $t = 'helper'; ;; my @hits = grep overlap($_, $t, 3), @words; dd \@hits; ;; @hits = grep overlap($_, $t, 4), @words; dd \@hits; ;; @hits = grep overlap($_, $t, 6), @words; dd \@hits; ;; @hits = grep overlap($_, $t, 7), @words; dd \@hits; ;; sub overlap { my ($s, $t, $min) = @_; ;; return ($s ^ $t) =~ m{ \A \x00{$min,} }xms; } " ["hello", "hel", "help", "helper", "helping"] ["help", "helper", "helping"] ["helper"] []