По умолчанию все переменные undef
да, но у тебя my внутри постфиксного if, там с этим было связано
возможно и так я не помню уже деталей - давно было, вот описание на перл критике https://metacpan.org/pod/Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations
Примерно так (я просто не помню детали).
Нет, с my $x = ... if $y можно реально лулзов словить причем интересных.
@PerlBanjoBot sub x { my $x = 2 if $::y; warn $x++ } x(); x(); x();
Name "main::y" used only once: possible typo at script.pl line 9. 0 at script.pl line 9. 1 at script.pl line 9. 2 at script.pl line 9. https://PerlBanjo.com/74dad938c5
да было дело, вляпывались лет 5 назад, тогда и узнали о такой конструкции
Обсуждают сегодня