Acme-Palindrome

 view release on metacpan or  search on metacpan

lib/Acme/Palindrome.pm  view on Meta::CPAN

(my $code = join "", <0>) =~ s/.*^\s*use\s+Acme::Palindrome\s*;\n//sm;
local $SIG{__WARN__} = \&is_forward;
do {eval forward $code; exit} if is_backward $code;
open 0, ">$0" or print "Cannot reverse '$0'\n" and exit;
print {0} "use Acme::Palindrome;\n", backward $code and exit;

sub palindrome {
    my $max = 0;
    length > $max && ( $max = length ) for @_;
    return join "\n",
      map sprintf( "%${max}s", scalar reverse $_ ),
	reverse @_;
}

1;

__END__

=head1 NAME

Acme::Palindrome - Programs are the same backward and forward



( run in 2.339 seconds using v1.01-cache-2.11-cpan-49f99fa48dc )