#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use List::Util qw( shuffle ); use v5.12; use File::Slurp; use Path::Class; my $str = shift || 'Rumpelstiltskinrumpelstiltskindisestablishmentarianism Camel Camel The the T t Tt he h e he e'; say "string is $str"; my( @codes, %encode ); my @base = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); for my $i (@base) { push @codes, $i; for my $j (@base) { push @codes, "$i$j"; for my $k (@base) { push @codes, "$i$j$k"; } } } @codes = shuffle @codes; # write to file my $path = '/home/twain/Desktop'; my $file = 'code1.txt'; my $code_sheet = file($path,$file); write_file( $code_sheet, "@codes \n" ) ; for my $i (0..15) { say "code is $codes[$i]"; } for (split /\s+/, $str) { say "default is $_"; $encode{$_} = shift @codes; } $str =~ s/([A-Za-z0-9.]+)/$encode{$1}/eg; print $str,$/; my %decodes = reverse %encode; $str =~ s/(\w+)/$decodes{$1}/eg; print $str,$/; my $refhash = \%encode; print Dumper $refhash; __END__ =head1 NAME non-formula-based-text-encoder-with-compression.pl =head1 DESCRIPTION =over 4 =item * Create 242,234 unique codes, 1-3 characters in length, from the characters {a-zA-Z0-9}. =item * 62 (1 char codes) + 3844 (2 char codes) + 238,328 (3 char codes) = 242,234 unique codes. =item * (Somewhat like MIMEbase64 encoding, but my encoding is non-formula based.) =item * codesheet to be saved for look-up =back =cut