Diagnostics add context that helps explain why a test failed.

Diagnostic Messages

diagnostic_messages.pl
use strict;
use warnings;

my $age = ;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";

print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
use strict;
use warnings;

my $age = ;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";

print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
use strict;
use warnings;

my $age = ;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";

print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
diagnostics A diagnostic line should be specific enough to help without changing the result of the test itself.