#!/usr/local/bin/perl -w use strict; my ($k,$c,@s,%f); @s = (); %f = ( # push Hello, World! '`' => sub { push @s, (33,100,108,114,111,119,32,44,111,108,108,101,72); }, # xyz => xxyz '"' => sub { push @s, $s[$#s]; }, # xyz => yzx "'" => sub { @s[$#s,$#s-1,$#s-2] = @s[$#s-1,$#s-2,$#s]; }, # not '~' => sub { push @s, 255^((pop @s)%256); }, # xor '^' => sub { push @s, (pop @s)^(pop @s); }, # output '|' => sub { print chr ((pop @s)%256) for (0..$#s); } ); while(<>){ $c = 0; s/[\n\r]//g; while( $k = substr($_, $c++, 1) ){ &{$f{$k}} if defined $f{$k}; } } ; exit;