in reply to anonymous vs named subroutines as closures

No. The warning just means the nested sub keeps the value of the lexical variable from the first call of the parent sub:
#!/usr/bin/perl use warnings; use strict; sub init { my %h = @_; sub ask { my $q = shift; return $h{$q}; } } init( a => 1, b => 2); print ask('a'); # 1. init( a => 10, b => 20); print ask('a'); # Still 1.
لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ