sub rosetta_code_new {
my ( $str ) = @_;
my ( @pal, %seen );
for my $n ( 0 .. length( $str ) - 1 ) {
for my $m ( 1 .. length( $str ) - $n ) {
my $strpal = substr $str, $n, $m;
push @pal, $strpal
if $strpal eq reverse $strpal and
not $seen{ $strpal } ++
}
}
return @pal
}
####
Rate rosetta eertree
eertree 1159/s -- -27%
rosetta 1584/s 37% --
####
Rate rosetta eertree
rosetta 387/s -- -31%
eertree 565/s 46% --