in reply to Re^4: Checking for a special matching
in thread Checking for a special matching

I'm not sure what you think the left bitshift operator << will do when used on a string like this, but if you add this line inside your loops:

print join(' ;; ', $hand[$i], ($hand[$i] << 1), $hand[$j], ( $hand[$j] << 1 )), "\n";
You'll see results like this:
Values: 10 of spades ;; 20 ;; 3 of hearts ;; 6 Values: Q of clubs ;; 0 ;; j of clubs ;; 0 Q of clubsj of clubs

What's happening is: the bitshift operator expects to work on an integer. So it tries to turn your string into a integer. In the cases where the string does start with an integer, it uses that integer, so '10 of spades' becomes '20', '3 of hearts' becomes '6', and so on. But in the cases where the string does not contain an integer, like 'j of clubs', it uses the value 0, which shifted left is still 0, so those strings all match as 'equal' to each other.

Aaron B.
My Woefully Neglected Blog, where I occasionally mention Perl.