Guest User

Untitled

a guest
Jul 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #
  3. # Bulk of the load credited to tybalt89 on irc.perl.org
  4. #
  5. use strict;
  6. use Getopt::Std;
  7.  
  8. my @words;
  9. my $given;
  10. my @matches;
  11. my %sizes;
  12. my %opt;
  13. my $wordlist = "/usr/share/dict/words";
  14.  
  15. getopts('c:s:e:w:', \%opt);
  16.  
  17. if (!$opt{'c'}) {
  18. print "Usage: $0 -c <chars> [-s <start chars>] [-e <end chars>] [-w <path to wordlist>]\n";
  19. exit;
  20. }
  21. if ($opt{'w'}) {
  22. $wordlist = $opt{'w'};
  23. }
  24.  
  25. open(my $WL_FP, $wordlist) || die "Could not open wordlist \"$wordlist\": $!\n";
  26. @words = <$WL_FP>;
  27. close($WL_FP);
  28. map (s/[\r\n]$//, @words);
  29.  
  30. $given = $opt{'c'};
  31. if ($opt{'s'}) { $given .= $opt{'s'}; }
  32. if ($opt{'e'}) { $given .= $opt{'e'}; }
  33.  
  34.  
  35. foreach my $word (@words) {
  36.  
  37. $given = join '', sort split //, $given;
  38. my $pat = join '.*', sort split //, $word;
  39.  
  40. if ($given =~ $pat) {
  41. if ($opt{'s'} && $word !~ /^$opt{'s'}/) { next; }
  42. if ($opt{'e'} && $word !~ /$opt{'e'}$/) { next; }
  43. my $word_len = length($word);
  44. if ($word_len == 1) { next; }
  45. if (!defined $sizes{$word_len}) {
  46. my @tmp;
  47. $sizes{$word_len} = \@tmp;
  48. }
  49. push @{$sizes{$word_len}}, $word;
  50. }
  51. }
  52.  
  53. foreach my $size (sort keys %sizes) {
  54. print "$size: " . join(', ',@{$sizes{$size}}) . "\n" ;
  55. }
Add Comment
Please, Sign In to add comment