#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11116556 use warnings; use Path::Tiny; use 5.016; ### adding grown-up perl logging use Log::Log4perl; # get rid of old one my $file = '/home/hogan/Documents/hogan/logs/4.log4perl.txt'; unlink $file or warn "Could not unlink $file: $!"; my $log_conf4 = "/home/hogan/Documents/hogan/logs/conf_files/4.conf"; Log::Log4perl::init($log_conf4); #info my $logger = Log::Log4perl->get_logger(); $logger->info($0); my $dict_path = '/home/hogan/Documents/hogan/my_data/upwords.10'; my $dictionary = path($dict_path); my @trials = ( ' f e ', 'w r e ', ' w r e', 'h og', ); for my $string (@trials) { $logger->info("============"); say "$string"; $logger->info($string); my @tiles = map +( 'a' .. 'z' )[ rand 26 ], 1 .. 7; print "tiles: @tiles\n"; $logger->info("tiles: @tiles\n"); my $pat = join '', map "$_?", sort @tiles, $string =~ /\w/g; my $tilepat = join '', map "$_?", sort @tiles; my $letters = join '', @tiles, $string =~ /\w/g; print "pat: $pat\ntilepat: $tilepat\nletters: $letters\n"; $logger->info("$pat\ntilepat: $tilepat\nletters: $letters\n"); my @matches = grep { ( join '', sort split // ) =~ /^$pat$/ } $dictionary->slurp =~ /^[$letters]{2,}$/gm; say "matches are @matches"; my @places; ( $string =~ tr/ /./r ) =~ /(?info("id: $id match: $match"); $match =~ /^$placepat$/ or next; $logger->info("id: $id placepat: $placepat"); $logger->info("matched: $match"); my $newtiles = $match & ( $placepat =~ tr/.a-z/\xff\0/r ); my ($hex) = unpack( 'H*', $newtiles ); $logger->info("hex is: $hex"); ( join '', sort $newtiles =~ /\w/g ) =~ /^$tilepat$/ and push @found, $match; } } return @found; } sub expand { grep /\w/, glob join '', map { /\w/ ? "{$_,.}" : $_ } split //, shift; } #### $ ls 3.conf 4.conf $ cat 3.conf ############################################################################### # Log::Log4perl Conf # ############################################################################### log4perl.rootLogger = DEBUG, LOG1, SCREEN log4perl.appender.SCREEN = Log::Log4perl::Appender::Screen log4perl.appender.SCREEN.stderr = 0 log4perl.appender.SCREEN.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.SCREEN.layout.ConversionPattern = %m %n log4perl.appender.LOG1 = Log::Log4perl::Appender::File log4perl.appender.LOG1.filename = /home/hogan/Documents/hogan/logs/3.log4perl.txt log4perl.appender.LOG1.mode = append log4perl.appender.LOG1.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.LOG1.layout.ConversionPattern = %d %p %m %n $ cat 4.conf ############################################################################### # Log::Log4perl Conf # ############################################################################### log4perl.rootLogger = INFO, LOG1, SCREEN log4perl.appender.SCREEN = Log::Log4perl::Appender::Screen log4perl.appender.SCREEN.stderr = 0 log4perl.appender.SCREEN.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.SCREEN.layout.ConversionPattern = %m %n log4perl.appender.LOG1 = Log::Log4perl::Appender::File log4perl.appender.LOG1.filename = /home/hogan/Documents/hogan/logs/4.log4perl.txt log4perl.appender.LOG1.mode = append log4perl.appender.LOG1.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.LOG1.layout.ConversionPattern = %d %p %m %n $