$ perl code3.pl string is Rumpelstiltskinrumpelstiltskindisestablishmentarianism Camel Camel The the T t Tt he h e he e code is Gzv code is rQ code is Z9z code is FMp code is Urm code is kCd code is oC2 code is 71G code is Xyy code is 912 code is 4Ja code is BHX code is Ats code is syv code is iRP code is Lwn default is Rumpelstiltskinrumpelstiltskindisestablishmentarianism default is Camel default is Camel default is The default is the default is T default is t default is Tt default is he default is h default is e default is he default is e Gzv Z9z Z9z FMp Urm kCd oC2 71G BHX 912 Ats BHX Ats Rumpelstiltskinrumpelstiltskindisestablishmentarianism Camel Camel The the T t Tt he h e he e $VAR1 = { 'e' => 'Ats', 'the' => 'Urm', 'Camel' => 'Z9z', 'T' => 'kCd', 'he' => 'BHX', 'Rumpelstiltskinrumpelstiltskindisestablishmentarianism' => 'Gzv', 'h' => '912', 'The' => 'FMp', 't' => 'oC2', 'Tt' => '71G' }; $ #### #!/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 #### sudo apt-get install perl-doc perldoc code3.pl