@esskar: Schöner sauber in Funktionen gesplitetter Code!
Mit Verwendung einer zweidimensionalen Struktur (wie von Esskar) spart man sich natürlich die ganze unschöne Arithmetik um die Position im Grid zu bestimmen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $to_encode = 'a perlhacker';
my $separator = '#';
my $set = [ map { chomp; [split /\s/, $_]; } <DATA> ];
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
\n\n
<!--EDIT|Ronnie|1122198394-->