#!/usr/bin/env perl # checks a word file against aspell en_GB master dict + en-medical.rws extra-dict # & .aspell.leeds.pws personal dict - dumps unrecognised words in temp file use Modern::Perl qw(2012); use Data::Printer; use Data::Dumper; use Text::Aspell; use Path::Tiny; use IO::All; use FindBin; #=============================================================================== my @files = ('.aspell.en.pws'); # files to word check #=============================================================================== open my $fh, '>', path($FindBin::Bin, 'debug.txt'); my $personal = path($FindBin::Bin, '.aspell.leeds.pws')->realpath; my $tempdict = path($FindBin::Bin, '.aspell.leeds.temp')->realpath; my $medical = path($FindBin::Bin, 'en-medical.rws')->realpath; my $speller = Text::Aspell->new; # p $speller; my %opts = ( 'lang' => 'en_GB', 'sug-mode' => 'fast', 'personal' => $personal, 'extra-dicts' => $medical, 'ignore-case' => 'true', ); # p %opts; exit; $speller->set_option( $_ => $opts{$_} ) for keys %opts; # $speller->print_config; exit; for (@files) { # next unless $_->filename =~ /.pws$/ && $_->filename !~ /^medterms/; # warn $_->filename; my $file = path($FindBin::Bin, $_)->realpath; my @contents = io($file)->chomp->slurp; # p @contents; my @unrecognised = grep { ! $speller->check( $_ ) } sort @contents; # p @unrecognised; # add to temp file for inclusion in persoanl dict: undef > io($tempdict); # clear 1st $_ . "\n" >> io($tempdict) for @unrecognised; # print $fh $_, "\n" for @unrecognised; }