Salutations to the esteemed Monks here,
my problem is as follows:
Following is what my program looks like:
print "Enter the filename of file having codon data:\n"; $file = <STDIN>; chomp ($file); open (IN, $file) or die "Error opening $file: $!\n"; print "\n\n"; while ($seq = <IN>) { print "$seq\n"; @triplets = unpack ("a3" x (length($seq)/3, $seq); print "@triplets\n\n"; } print "\n\n";
Now, suppose if the text file "codons" (no quotes) contains the following:
atgcatccctttaat tctgtctga
Then the output of my program is something like this:
atgcatccctttaat atg cat ccc ttt aat tctgtctga tct gtc tga
Note that i am splitting a sequence into array elements, where each element of the array corresponds to three characters of the sequence and i am doing this without using any delimiter like , or : (so i can't use split).
My problem is that the unpack function is highly mysterious to me. The "x" for example is the cross operator i believe but i don't know what it does. The "a3" inside the parenthesis within unpack is compulsory it turns out; replace "a3" with "b3" and u get something weird as output. So could someone please shed some light on the unpack function and explain how it is operating here, in my program.
20050301 Janitored by Corion: Added formatting
In reply to splitting a sequence using unpack by Rashmun
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |