Я не могу понять из-за чего происходит такое поведение.
Покажите, пожалуйста, кусок доки где объянено, почему так.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
my ($t1, $t2);
foreach (@$t1) {} # почему-то не вызывает ошибку
say Dumper $t1;
say '' if @$t2; # вызывает ошибку, как и ожидалось
say 'end';