#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $to_encode = 'a perlhacker'; my $separator = '#'; my $set = [ map { chomp; [split /\s/, $_]; } ]; my %keys; @keys{0..5} = qw/a d f g v x/; my %lut; for my $row (0 .. 5) { for my $col (0 .. 5) { $lut{$set->[$row]->[$col]} = $keys{$row}.$keys{$col}; } } my $encoded = join ' ', map { $lut{$_} ? $lut{$_} : $separator } split //, $to_encode; print $encoded, "\n"; _ _DATA_ _ m l k 1 h g p 2 o i f u e r b d t z 5 6 s v 7 j 4 a q 3 c 9 y n 0 w 8 x