in reply to What does a failed regular expression match actually return?

Perl doesn't have a single false value, it has "falsey" values. Then it has defined, which turns everything but undef into a "truthy" value.

For example:

print(( 0 ) ? qq{not false\n} : qq{false\n});# false print(( defined 0 ) ? qq{not false\n} : qq{false\n});# not false print(( '' ) ? qq{not false\n} : qq{false\n});# false print(( defined '' ) ? qq{not false\n} : qq{false\n});# not false print(( undef ) ? qq{not false\n} : qq{false\n});# false print(( defined undef ) ? qq{not false\n} : qq{false\n});# false print(( ' ' ) ? qq{not false\n} : qq{false\n});# not false print(( -1 ) ? qq{not false\n} : qq{false\n});# not false print(( () ) ? qq{not false\n} : qq{false\n});# false print(( [] ) ? qq{not false\n} : qq{false\n});# not false print(( {} ) ? qq{not false\n} : qq{false\n});# not false
Which leads me to point out that Perl behaves correctly, even when faced with "No Output For This Line!" and '"phantom" version of false'.
print(( "a" =~ m/a/ ) ? qq{not false\n} : qq{false\n}); # "not false" print(( "a" =~ m/b/ ) ? qq{not false\n} : qq{false\n}); # "false" print(( "a" eq "a" ) ? qq{not false\n} : qq{false\n}); # "not false" print(( "a" eq "b" ) ? qq{not false\n} : qq{false\n}); # "false" print(( "a" !~ m/a/ ) ? qq{not false\n} : qq{false\n}); # "false" print(( "a" !~ m/b/ ) ? qq{not false\n} : qq{false\n}); # "not false"