Dear porters, when sub bar is not declared at all, 'sub foo { bar() }' compiles under strict/warnings without any issues. Same goes for 'my $x = \&bar'. Is this by design? I understand why glob refs would not warn or croak but Is there a reason why explicitly named subroutines that don't exist at compile time would not yield even a warning until they are actually called? On a somewhat related note, how would one detect if a named subroutine/subref was declared or not (it's ok if it was declared but is empty) at runtime? Right now I'm doing: sub subref_is_actually_there ($subref) { require B; my $cv = B::svref_2object($subref); return B::class($cv->ROOT) eq 'NULL' && !${ $cv->const_sv }; } and it seems to work fine but I'm not confident in it. Is there a better or more readable/portable way? One that would not need to rely on B::*, maybe just checking if {CODE} is undef? I looked on perlsub and perlref but could not reach any reasonable explanation on either, so any help would be greatly appreciated. Cheers! garuThread Next