It's intentional, if now regretted.
From Template-Toolkit/source/lib/Template/Stash.pm
#---------------------------------------------------------------------
+---
# undefined($ident, $args)
#
# Method called when a get() returns an undefined value. Can be redef
+ined
# in a subclass to implement alternate handling.
#---------------------------------------------------------------------
+---
sub undefined {
my ($self, $ident, $args) = @_;
if ($self->{ _STRICT }) {
# Sorry, but we can't provide a sensible source file and line
+without
# re-designing the whole architecture of TT (see TT3)
die Template::Exception->new(
$UNDEF_TYPE,
sprintf(
$UNDEF_INFO,
$self->_reconstruct_ident($ident)
)
) if $self->{ _STRICT };
}
else {
# There was a time when I thought this was a good idea. But it
+'s not.
return '';
}
}