|
|
(view this code in a separate window)
#!/usr/bin/perl
#
# Quick dirty dvorak to/from querty script
#
# This is *NOT* the script I used for the book.
# (You'd know why if you read it.)
#
# This is also an execellent example of how not to
# write readable code.
#
# Writing these comments took longer than writing
# the code itself.
#
# Bri Hatch <bri@ifokr.org>
# Released under the GPL
use strict;
use Getopt::Long;
# Our big lookup table
my @mapping = qw(
= ] ' q , w w ,
. e v . z / ; z
s ; [ - - ' / [ ] =
a a o s j c q x e d
k v u f y t p r b n
x b d h i g f y m m
h j g u t k c i r o
n l l p
);
use warnings; # Here, due to warning in mapping above.
# Make hashes from the array
my(%tod,%toq);
while ( @mapping ) {
my($d,$q) = splice(@mapping,0,2);
$toq{uc $d} = uc $q; $tod{uc $q} = uc $d;
$toq{$d} = $q; $tod{$q} = $d;
}
my($tod,$toq);
GetOptions( 'tod|d' => \$tod, 'toq|q' => \$toq );
die "Usage: $0 {--todvorak | --toqwerty}\n"
unless ($toq or $tod) and not ($toq and $tod);
while (<>) {
if ( $toq ) {
s/(.)/ defined $toq{$1}? "$toq{$1}":"$1" /eg;
print;
} else {
s/(.)/ defined $tod{$1}? "$tod{$1}":"$1" /eg;
print;
}
}
|