But in those languages, the equivalent to ($x == "foo") will return false (almost) all of the time. The poster here says that this expression is true (almost) all of the time in Perl. Why?
This is why disciplined (i.e. non-tiny-script-y) perl code starts off with
use strict;
use warnings;
just like disciplined javascript starts off with /* use strict */
and disciplined C code enables compiler warnings, and truly disciplined C code makes those fatal, just like in perl you can do use warnings FATAL => 'all';
If you don't do that, then you get the short script/one liner style behaviour where, just like sed, awk or bash, it assumes you know what you're doing. If you don't, then you should be asking the VM to help tell you when those problems exist, same as 'set -x' in bash is incredibly useful if you don't plan to add '|| exit 255;' onto the end of every command.How do you evaluate this, depends on the context. Wasn't that the whole point of a dynamic language anyway?
Javascript, PHP and Perl are weakly typed. Smalltalk, Lisp, Python, Ruby... are strong typed. But all of them are dynamic.
[1] http://en.wikipedia.org/wiki/Strong_and_weak_typing#Predicta...