sub reconstructTitle { my $title = shift; my $recon = shift; my $final = $title; my $len = length( $recon ); my $pos = 0; ### IF RECONSTRUCT IS EMPTY, WE DON'T NEED TO DO ANYTHING... if( $recon =~ /^\s*$/ ) { return( $final ) } ### BEGIN CRAWLING THROUGH RECONSTRUCT... while( $pos < $len ) { $pos++; my $char = substr( $recon, $pos, 1 ); my $before = substr( $recon, $pos-1, 1 ); my $after = substr( $recon, $pos+1, 1 ); if( $char eq 'M' ) { my $after_string = substr( $recon, $pos + 2, ord( substr( $recon, $pos+1, 1 ) ) ); if( length( $after_string ) < ord( substr( $recon, $pos+1, 1 ) ) ) { $after_string = $after_string . " " } $final = substr( $final, 0, ord($before) -1 ) . $after_string . substr( $final, ord($before)-1, 255 ); $pos = $pos + ord( substr( $recon, $pos+1, 1 ) ); $pos = $pos + 2; } elsif( $char eq 'I' ) { my $after_string = $after; $final = substr( $final, 0, ord($before) -1 ) . $after_string . substr( $final, ord($before)-1, 255 ); $pos = $pos + 2; } elsif( $char eq '2' ) { my $after_string = substr( $recon, $pos+1, 1 ); $final = substr( $final, 0, ord($before) -1 ) . $after_string . substr( $final, ord($before)+1, 255 ); $pos = $pos + 2; } elsif( $char eq 'R' ) { my $after_string = substr( $recon, $pos+1, 1 ); $final = substr( $final, 0, ord($before) -1 ) . $after_string . substr( $final, ord($before), 255 ); $pos = $pos + 2; } elsif( $char eq 'P' ) { my $after_string = substr( $recon, $pos+1, 2 ); $final = substr( $final, 0, ord($before) -1 ) . $after_string . substr( $final, ord($before), 255 ); $pos = $pos + 3; } elsif( $char eq 'D' ) { $final = substr( $final, 0, ord($before) -1 ) . substr( $final, ( ord($before)-1 + ord($after) ), 255 ); $pos = $pos + 2; } elsif( $char eq 'E' ) { $final = substr( $final, 0, ord($before) -1 ) . substr( $final, ( ord($before) ), 255 ); $pos = $pos + 1; } ####### NOT SURE IF THIS IS RIGHT, BUT IT WORKS! elsif( $char eq 'C' ) { my $string = substr( $recon, $pos + 1, 255 ); $final = substr( $final, 0, ord($before) -1 ) . $string; $pos = $pos + 1000; } ####### GIVE UP IF IT'S AN UNKNOWN COMMAND... else { die "unknown $char at $pos\n" } } ### FINAL TIDY UP FOR DISPLAY ON WEB PAGE... $final =~ s/(\w) \/$/$1./gi; $final =~ s/ \/$//g; $final =~ s/ \:/\:/g; $final =~ tr/\000-\177//cd; $final =~ s/\.$//g; return($final); }