sub LR_Palindrome { my $forward = shift; my $reverse = reverse $forward; return $forward if $forward eq $reverse; my ($max, $pos, $length, $palindrome, $test) = (0); for $pos ( 0 .. (length $forward) - 1 ) { for $length ( $max + 1 .. (length $forward) - $pos ) { $test = substr( $forward, $pos, $length ); if ( index($reverse, $test) != -1 ) { $max = length $test; $palindrome = $test; } } } return $palindrome; }