#!/usr/bin/perl use strict; my @animals = ( "bear<1>\n", "camel<0> <2>\n", "<2>horse\n", "duck<3>\n" ); my @changeTo = ( 'A', 'B', 'C', 'D' ); my @toFind = ( '<0>', '<1>', '<2>', '<3>' ); my $k = 0; while($k < 5) { print map( change(\$_, \@toFind, \@changeTo) , @animals ); my $t = shift(@changeTo); my $r = int(rand(100)); push(@changeTo, $r); print "\n$k:\n" . "@changeTo" . "\n";; $k++; } sub change { my $str = shift; my $toFind = shift; my $changeTo = shift; my @f = @$toFind; my @c = @$changeTo; my $i = 0; foreach my $find (@f) { my $change = $c[$i]; $$str =~ s/$find/$change/gi; $i++; } return $$str; }