diff /usr/local/lib/perl/5.18.2/Tcl.pm.bak /usr/local/lib/perl/5.18.2/Tcl.pm 384a385 > use Scalar::Util qw(weaken); 560a562,567 > # this kills the weakened tclname ref leaveng the strong current_r ref (like before) > > if (exists($anon_refs{$current_r})){ > anon_kill($anon_refs{$current_r}[2]); > } > 594a602,607 > # kill an anon_refs name > sub anon_kill { > my $anonname=shift; > delete $anon_refs{$anonname}; > } > 618c631,639 < $anon_refs{$rname} = bless [\$sub, $interp], 'Tcl::Code'; --- > # $anon_refs{$rname} = bless [\$sub, $interp], 'Tcl::Code'; > my $isnew=0; > unless (exists $anon_refs{$tclname}) { > $anon_refs{$tclname} = bless [\$sub, $interp, $tclname], 'Tcl::Code'; > $isnew=1; > } > $anon_refs{$rname} = $anon_refs{$tclname}; > weaken($anon_refs{$tclname}) if ($isnew); > 652a674 > my $anonname = $_[0]->[2]; 655a678 > Tcl::anon_kill($anonname);