Post by Emmanuel FloracPost by Klausle test échoue car le smart match entre '3' et ' 3' est positif (il
devrait être négatif car '3' ne ' 3').
Non, il doit être positif parce que c'est un smart match ~~, pas un
simple match eq ou ne. Vu que " 3" =~ "3", il n'y a pas d'erreur. C'est
plutôt parce que tu ne sais pas utiliser les regexp :)
perl -e "print qq(match\n) if ( ' 3' =~ '3' )"
j'avais utilisé ' 3' ~~ qr{3}. Dans ce cas le smart-match utilise les
expressions régulières.
Par contre, j'ai utilisé ' 3' ~~ '3' ce qui traduit dans le cas 32.
Post by Emmanuel Florac1. $a $b Type of Match Implied Matching Code
2. ====== ===== ===================== =============
3. Any undef undefined !defined $a
4.
5. Any Object invokes ~~ overloading on $object, or dies
6.
7. Hash CodeRef sub truth for each key[1] !grep { !$b->($_) } keys %$a
9. Any CodeRef scalar sub truth $b->($a)
10.
11. Hash Hash hash keys identical (every key is found in both hashes)
13. Regex Hash hash key grep grep /$a/, keys %$b
14. undef Hash always false (undef can't be a key)
15. Any Hash hash entry existence exists $b->{$a}
16.
18. Array Array arrays are comparable[2]
21. Any Array match against an array element[3]
23.
24. Hash Regex hash key grep grep /$b/, keys %$a
26. Any Regex pattern match $a =~ /$b/
27.
29. Any Num numeric equality $a == $b
30. Num numish[4] numeric equality $a == $b
31. undef Any undefined !defined($b)
32. Any Any string equality $a eq $b
33.
34. 1 - empty hashes or arrays will match.
35. 2 - that is, each element smart-matches the element of same index in the
36. other array. [3]
37. 3 - If a circular reference is found, we fall back to referential equality.
38. 4 - either a real number, or a string that looks like a number