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 )