in reply to perl undef value and eq and ==

== compares numbers. undef as a number is 0, 'something not undef' as a number is 0. 0 == 0 returns true.

Similarly,

say q() eq undef; # 1

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,