После того, как это сгорело, я должен посоветовать вам не объявлять переменную с условным модификатором. Если условие не выполняется, оно выполняет no часть другого предложения, что означает, что вы не объявляете $tmpl1
, но, поскольку оно уже прошло строго, оно позволяет назначить неопределенную позицию в памяти.
Существует более безопасный способ сделать то, что делает ваш предшественник, который пока может проиллюстрировать решение.
my $tmpl1
= $file->{file_name} =~ /\.(avi|divx|mkv|flv|mp4|wmv)$/i
? 'download1_video.html'
: $file->{file_name} =~ m/\.mp3$/i
? 'download1_audio.html'
: 'download1.html'
;
Таким образом,
$tmpl1
всегда объявляется
$tmpl1
всегда присваивается значение