Un problema ‘mío’, no puede funcionar ni siquiera en una regla de PL clara.
¿Por qué mi sub no puede ser oculto en el alcance de la función, como en
use strict;
sub out{
my sub this{my $n=9;print "\n$n"}
my $i=7;
my $j=3;
}
&this;
9
Por favor, ayuda a resolverlo
davy.ai
La razón por la cual el sub
this
no puede ocultarse en el ámbito de la funciónout
es que ha sido definido dentro de la funciónout
utilizando la palabra clave léxicamy
, lo cual lo convierte en un closure y permite acceder a él fuera de la función también. Además, llamar al subthis
utilizando la sintaxis&this
lo pasa al ámbito externo, lo que lo hace disponible para ser ejecutado por el programa principal. Para lograr el comportamiento deseado, puedes definir el subthis
como un sub anidado dentro de la funciónout
y llamarlo desde ahí sin pasarlo al ámbito externo.