Try something like this:

my $string = "AAAAAAAA";
my @aa = qw(A C D E F G H I K L M N P Q R S T V W Y);  
foreach(@aa){
   my $i;
   my @strArray = split //,$string;
   for($i = 0;defined $strArray[$i];$i++){
      my $j;
      for($j = 0;defined $strArray[$j];$j++){
         if($j == $i){
            print "$_";
         }else{
            print "$strArray[$j]";
         }
      }
   }
}
      
Disclaimer:  I can't test this right now, but I'm pretty sure it will work. 

-----Original Message-----
From: Pedro A Reche Gallardo
To: [EMAIL PROTECTED]
Sent: 3/22/02 11:17 AM
Subject: string question

Hi All, I was trying to generate variations of the 8  character string
"AAAAAAAA" by changing every character with the elements containing in
an array @aa = ('A', 'B', 'C', 'D'). The way I did it was quite naive,
using a "for" loop that changes the A character at  position 1 of the
AAAAAAAA string by all the characters in the @array,  and   repeating
the for loop to change  the remaining  positions. Thus, I have 8 for
loops in my code, and wonder how I can  achieve the same whithout having
to write 8 times the for loop.   The actual code I am using is attached
bellow. Any suggestion will be welcomed, and thanks in advance for the
help.
Cheers
#!/usr/sbin/perl -w

use strict;
my @aa =
('A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V'
,'W','Y');

my $i;
my $l;
$l = @aa;
$l = $l -1;

for ($i= 0; $i <= $l; $i++) {
printf "%3s %8s\n", "p1$aa[$i]", "$aa[$i]AAAAAAA";
}

for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p2$aa[$i]", "A$aa[$i]AAAAAA";

}

for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p3$aa[$i]", "AA$aa[$i]AAAAA";
}


for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p4$aa[$i]", "AAA$aa[$i]AAAA";
}
#
for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p5$aa[$i]", "AAAA$aa[$i]AAA";
}

for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p6$aa[$i]", "AAAAA$aa[$i]AA";
}

for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p7$aa[$i]", "AAAAAA$aa[$i]A";
}

for  ($i= 1; $i <= $l; $i++) {
printf "%3s %8s\n", "p8$aa[$i]", "AAAAAAA$aa[$i]";
}


*******************************************************************
PEDRO A. RECHE , pHD            TL: 617 632
3824
Dana-Farber Cancer Institute,   FX: 617 632 4569
Harvard Medical School,         EM: [EMAIL PROTECTED]
44 Binney Street, D1510A,       EM: [EMAIL PROTECTED]
Boston, MA 02115                URL:
http://www.reche.org
*******************************************************************


--------------------------------------------------------------------------------
This email may contain confidential and privileged 
material for the sole use of the intended recipient. 
If you are not the intended recipient, please contact 
the sender and delete all copies.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to