Perl has no built-in assert (this is embarrassing!), as do C++ and Python. assert greatly simplifies the writing of test code. Perl does offer a kludged-on assert, but it has several limitations, as demonstrated below.
require "assert.pl";
my $a = "MR";
my $b = "MR";
assert("$a eq $b");
$a = "MR.";
$b = "MR.";
#assert("$a eq $b"); # fails due to "syntax error"
assert("'$a' eq '$b'"); # Adding quotes works.
my %h = (1, "MR", 2, "MR");
assert("$h{1} eq $h{2}");
my %h1 = (1, "MR.", 2, "MR.");
#assert("$h1{1} eq $h1{2}"); # fails due to "syntax error"
assert("'$h1{1}' eq '$h1{2}'"); # works
my %h2 = ("1", "MR.", "2", "MR.");
assert("'$h2{\"1\"}' eq '$h2{\"2\"}'"); # works
$a = '';
$b = '';
assert("'' eq ''"); # works
#assert("$a eq $b"); # fails due to "syntax error"
assert("'$a' eq '$b'"); # Adding quotes works.
All kinds of obvious problems.
a = "MR"
b = "MR"
assert(a == b)
a = "MR."
b = "MR."
assert(a == b) # works as is
h = {1:"MR", 2:"MR"}
assert(h[1] == h[2])
h1 = {1:"MR.", 2:"MR."}
assert(h1[1] == h1[2]) # works as is
h2 = {"1":"MR.", "2":"MR."}
assert(h2["1"] == h2["2"]) # works as is
a = ''
b = ''
assert(a == b) # works as is
The same code as above in Python. Works without special cases, and as expected.