use warnings; use strict; my $line = "Just another Ook! hacker"; my $OokCode; my @chars = split "", $line; my $curVal = 0; for my $curChr (@chars) { my $delta = ord ($curChr) - $curVal; $curVal = ord ($curChr); if ($delta > 0) {$OokCode .= "+" while $delta--;} elsif ($delta < 0) {$OokCode .= "-" while $delta++;} $OokCode .= "o"; } my @subs = ( ['+' x 96, ">++++[->++++[-<<++++++>>]<]<"], ['+' x 72, ">++++++[->+++[-<<++++>>]<]<"], ['+' x 64, ">++++[->++++[-<<++++>>]<]<"], ['+' x 60, ">++++[->+++++[-<<+++>>]<]<"], ['+' x 48, ">+++[->++++[-<<++++>>]<]<"], ['+' x 36, ">+++[->+++[-<<++++>>]<]<"], ['+' x 32, ">++++[->++++[-<<++>>]<]<"], ['+' x 30, ">++[->+++++[-<<+++>>]<]<"], ['+' x 27, ">+++[->+++[-<<+++>>]<]<"], ); $OokCode =~ s/\Q${$_}[0]\E/${$_}[1]/g for (@subs); ${$_}[0] =~ s/\+/-/g for @subs; ${$_}[1] =~ s/<(\++)/'-' x length ($1)/eg for @subs; #$OokCode =~ s/\Q${$_}[0]\E/${$_}[1]/g for (@subs); $OokCode =~ s/\+/Ook. Ook. /g; $OokCode =~ s/\-/Ook! Ook! /g; $OokCode =~ s/\/Ook. Ook? /g; $OokCode =~ s/\[/Ook! Ook? /g; $OokCode =~ s/\]/Ook? Ook! /g; $OokCode =~ s/i/Ook. Ook! /g; $OokCode =~ s/(?