#!/usr/bin/perl use strict; use warnings; my @range = map { chr() } 32 .. 126; open (PALINDROMES, '>', 'palindromes.dat') or die "Unable to open palindromes.dat for writing : $!"; for ( 1 .. 10 ) { my $string; $string .= rand() <= .3 ? gen_palindrome() : $range[ rand @range ] for 0 .. (rand 25) + 5; print PALINDROMES $string, "\n"; } sub gen_palindrome { my $string; $string .= $range[ rand @range ] for 1 .. (rand 48) + 2; return $string . (rand() < .5 ? $range[ rand @range ] : '') . reverse $string; }