Thanks kenneethk
It took me a while to figure it out. I am putting your response in more explicit terms for neophytes like myself.
`$Str1 = "AAAACCCCGGGGTTTT";
$Str2 = "ACGTACGTACGTACGT";
$cmp = $Str1^$Str2;
$cmp |= '0' x length($cmp);
print "$Str1\n";
print "$Str2\n";
print "$cmp\n";
`
`**OUTPUT**
AAAACCCCGGGGTTTT
ACGTACGTACGTACGT
0265204764035730
`
# What is ‘|=’ doing? This is bitwise ‘or’. Does ‘or’ on left side and right side (right side value is ‘0’ or 00110000). Puts result of ‘or’ in left side. Originally, the value in $cmp for “A” ^ “G” was 00000110 (= 6) – this is ‘Acknowledgement’ – this is not a printable character.
By doing the ‘or’ with “0” (00110000 = 48) you convert ‘6’ to ‘6’ + ‘48’ = ‘54’ – this is the value for the character 6. So, $cmp looked empty because all of the values are for non-printable characters.
A = 01000001
G = 01000111
^ 00000110 = 6 ‘Acknowledgement’
left 00000110
‘0’ 00110000
| (or) 00110110 = 54 ‘character 6’
******************
A = 01000001
T = 01010100
^ 00010101 = 21 ‘Negative Acknowledgement’
left 00010101
‘0’ 00110000
|(or) 00110101 = 53 ‘character 5’
Thanks again for your help,
romano (aka KennB) |