lodin has asked for the wisdom of the Perl Monks concerning the following question:
I'm attempting to write a constant::lexical pragma and the only unresolved issue as of now is that the constant names are valid barewords even though the constant subroutine has been undefined.
This is a major issue as one of the great features of constants is that they normally give compile-time errors if not defined.use 5.010; use strict; sub FOO () { 'foo' } BEGIN { undef &FOO } say defined &FOO ? 'subroutine defined' : 'subroutine undef'; say eval 'my $false; FOO if $false; 1' ? 'FOO allowed' : 'FOO not allowed' ; __END__ subroutine undef FOO allowed
I don't see any way to do this in pure Perl. I've browsed perldata, perlapi, perlguts, and perlintern for any ideas but I haven't found anything useful. I don't grok most of the guts. Is it possible using XS? Of course, XS is the very last resort.
lodin
Update: Added stricture and my $false; in the eval to make the test actually work.
|
---|
Back to
Seekers of Perl Wisdom