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:
You'll see results like this:print join(' ;; ', $hand[$i], ($hand[$i] << 1), $hand[$j], ( $hand[$j] << 1 )), "\n";
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.
|
|---|