Hi!
I'd like to ask for help because my code isn't behaving correctly (and I can't figure out why).
So, here's my issue. I have to deduce positions in a "simple string" given positions in a "complete string".
Here's a minimal exemple of my input file:
#name complete(cs) len(cs) simple(ss) len(ss) pos(cs)
NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,6
NAME2 AAAA0AA00000A 13 AAAAAAA 7 7
Here's my code:
$ perl -anle '
print "$_ position(cs)" and next if /^#/;
printf "%s",$_;
for $pos_ss (split ",",$F[5]) {
$char = substr($F[1],$pos_ss-1,1);
@cs = split //,$F[3];
@cs_idx = grep {$cs[$_] eq $char} 0..$#cs;
push @res,++$cs_idx[$pos_ss-1];
}
printf "%14s\n", join ",",@res;
@res=();
' file
And here's my expected output:
NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,9 3,5
NAME2 AAAA0AA00000A 13 AAAAAAA 7 7 6
In the provided exemple, I have to say that the 4th character (which is the 3rd "A") in the complete string(cs) corresponds to the the 3rd character in the simple string(ss), and so on...
Could you please help me formatting/reviewing my code?
Thanks in advance for your precious help!!