All pastes #397577 Raw Edit

dupdog.pl

public text v1 · immutable
·published 2007-03-16 16:19 UTC
rendered paste body
#!/bin/perl
# Perl output generated from a Thutu2 file.

$_="=1";
$row="";
$ninequit=0;
while(!$ninequit)
{
$row =~ s/=/=q/g;
$row =~ s/\t/=t/g;
$row =~ s/\n/=x/g; # The newline at the end of the line becomes =x
$row =~ s/\r/=r/g;
$row =~ s/\f/=f/g;
$row =~ s/\a/=a/g;
$row =~ s/\e/=e/g;
$row =~ s/([!-\/:-<>-@[-`{-~])/=$1/g; #`
defined($row) or $row = '=9';
$_ = $row . $_;
while(1) {
while(not(/=1/ or /=9/ or 0)) {do {
  s/^(.*)=x/M$1/ and next;
  s/=[^x~?!]/*/ and next;
  s/=([^x])/$1/ and next;
  s/^M\?((..)*.)$/S$1/ and next;
  s/^M\?((..)*)$/C%%$1/ and next;
  s/%%\?/!%%/ and next;
  s/%%!/~%%/ and next;
  s/%%~/?%%/ and next;
  s/^C(.*)%%/S$1/ and next;
  s/^M~(.*)$/S$1$1/ and next;
  /^M(.*)()/ and do{$c=ord($1);$e=$1eq$2;$g=$1gt$2;$u=uc($1);$l=lc($1);$g=length($1);};
  s/^M/P$g:128:/ and next;
  /^P([0-9]+):(128):/ and do {$s=$1+$2;$p=$1*$2;$d=$1-$2;$m=0;$2 and $m=$1%$2;$g=$1>$2;$c=chr($1);$e=$1==$2;$q=0;$2 and $q=$1/$2;$v=int($q);};
  s/^P([0-9]+):(128):/P$m:0:/ and next;
  /^P([0-9]+):(0):/ and do {$s=$1+$2;$p=$1*$2;$d=$1-$2;$m=0;$2 and $m=$1%$2;$g=$1>$2;$c=chr($1);$e=$1==$2;$q=0;$2 and $q=$1/$2;$v=int($q);};
  s/^P([0-9]+):(0):/P-$c-/ and next;
  /^P-([^a]|[^b])-/ and print $1;
  s/^P-([^a]|[^b])-./S/ and next;
  s/^S!(.*)$/M$1$1/ and next;
  s/^S\?/R--/ and next;
  s/--(.*)(.)$/$2--$1/ and next;
  s/^R(.*)--/M$1/ and next;
  /^S(.*)()/ and do{$c=ord($1);$e=$1eq$2;$g=$1gt$2;$u=uc($1);$l=lc($1);$g=length($1);};
  s/^S.*$/O$g/ and next;
  /^O(.*)$/ and print $1;
  s/^O(.*)$/=n=x=9/ and next;
last;}};
while(/=1/ and 1) {do {
  s/=1// and next;
last;}};
last; }
s/=9// and $ninequit=1;
if(s/(.*?)=x//) # =x marks the end of what to print out.
{
    $orow=$1;
    $orow =~ s/=t/\t/g;
    $orow =~ s/=n/\n/g; # =n converts back to newline.
    $orow =~ s/=r/\r/g;
    $orow =~ s/=f/\f/g;
    $orow =~ s/=a/\a/g;
    $orow =~ s/=e/\e/g;
    $orow =~ s/=([!-\/:-<>-@[-`{-~])/$1/g; #`
    $orow =~ s/=q/=/g;
    # print "\n"; # DEBUG
    print $orow;
}
# Perl changes input source on EOF, but we want to continue in an EOF
# condition after EOF is reached.
$ninequit or ($row eq '=9' and scalar($row = undef, 1)) or $row=<>;
};