my @elems = ("x", "y", "z"); # array size may be varied (lesser or more than 3) my @tobepopulated = ("foo", "foo", "foo", "foo", "foo", "foo", "foo", +"foo", "foo", "foo"); # this can be more 10 elements my $m= 2 * scalar @tobepopulated; my $d= 2 * scalar @elems; die "too few elements to be populated" unless $m >= $d; my $i= 0; my $n= $d/2; foreach (@tobepopulated) { $_.= '-' . $elems[$i]; $n+= $d; if ( $n > $m ) { $n-= $m; ++$i; } } print join "\n",@tobepopulated,'';