#!/usr/bin/perl # # garble.pl # # Uses Babelfish to mangle text. Useless but fun :-) # # Usage: # perl garble.pl # # Options: # Options marked with a * are required # # -i - Loads a file to mangle* # -o - File to write mangled text to* # -s - Singlepass mode, with the specified language # -b - Base language. English by default. # -m ,... - Multipass mode. Any number of languages # seperated by commas. Default is # -m French,Spanish # -t - Translates one language to another # use Getopt::Std; use WWW::Babelfish; # #=================[ Support Subs ]==================================== # sub DoTranslation { my($in_text,$language_1,$language_2)=@_; my $obj = new WWW::Babelfish( 'agent' => 'GarbleText/1.0' ); die( "Babelfish server unavailable\n" ) unless defined($obj); my $altered = $obj->translate( 'source' => "$language_1", 'destination' => "$language_2", 'text' => "$in_text"); die("Could not translate: " . $obj->error) unless defined($altered); return $altered; } sub PrintBanner { print "\n=========\n"; print "garble.pl\n"; print "=========\n\n"; print "(c)Copyleft #include 2003\n\n"; } # #=================[ Main ]============================================ # my $default_language="English"; my $multipass_mode=1; my $singlepass_mode=0; my @mpass=("French","Spanish"); my $singlepass_lang="English"; getopt('iosbmt'); if( ($opt_i) && ($opt_o) ) # Everything we need { PrintBanner(); if($opt_s) { $singlepass_mode=1; $multipass_mode=0; $singlepass_lang=$opt_s; } if($opt_t) { $singlepass_mode=0; $multipass_mode=0; } if($opt_m) { @mpass=split(',',$opt_m); } if($opt_b) { $default_language=$opt_b; } } else { PrintBanner(); print "Usage:\n"; print "perl garble.pl \n\n"; print "Options:\n"; print "Options marked with a * are required\n\n"; print "-i - Loads a file to mangle*\n"; print "-o - File to write mangled text to*\n"; print "-s - Singlepass mode, with the specified language\n"; print "-b - Base language. English by default.\n"; print "-m ,... - Multipass mode. Any number of languages\n"; print " seperated by commas. Default is\n"; print " -m French,Spanish\n"; print "-t - Translates one language to another\n\n"; exit; } # Everything's in place, let the mangling begin! # Load in the text print "Reading $opt_i..."; open(TEXTFILE,"<$opt_i"); my @tfile=; my $tt = join('',@tfile); close TEXTFILE; print "done!\n"; my $at; my $mangled_text; if($opt_t) { # Simple translation mode print "Simple Translation Mode\n"; print "Language: $opt_t\n"; $at=DoTranslation($tt,$default_language,$opt_t); $mangled_text=$at; } # Singlepass mode first if($singlepass_mode==1) { print "Singlepass Mode\n"; print "Language: $singlepass_lang\n"; print "Translating $default_language to $singlepass_lang...\n"; $at=DoTranslation($tt,$default_language,$singlepass_lang); print "Translating $singlepass_lang to $default_language...\n"; $tt=DoTranslation($at,$singlepass_lang,$default_language); $mangled_text=$tt; } if($multipass_mode==1) { print "Multipass Mode\n"; print "Passes: ".($#mpass +1)."\n"; foreach $lang (@mpass) { print "Translating $default_language to $lang...\n"; $at=DoTranslation($tt,$default_language,$lang); print "Translating $lang to $default_language...\n"; $tt=DoTranslation($at,$lang,$default_language); } $mangled_text=$tt; } # Now that we've got the mangled text, let's print it print "Writing $opt_o..."; open(DUMPTEXT,">$opt_o"); print DUMPTEXT "$mangled_text\n"; close DUMPTEXT; print "done!\n";