assuring that all subroutines are defined

Bobby Kleemann rkleeman at
Thu May 18 13:55:31 CDT 2000

On Thu, 18 May 2000, John R. Comeau wrote:

> ~sdpm~
> I asked a couple of people about this at the SDPM meeting last night.
> The question is how you can be certain that all subroutines called by
> your program actually exist.  That is, I'd like a way to find out if
> any subroutines are undefined as soon as the program starts to run
> instead of waiting until much later when the subroutine is actually
> called to find out.
> I know this presents somewhat of a problem since new subroutines can
> be eval'ed into existence like the following:
>     my $sub_definition = 'sub mysub {print "hello\n"}';
>     eval $sub_definition;
> So it would be difficult for the Perl compiler to know beforehand
> whether a given subroutine will exist at the time it's called.
> But disregarding this, is there some way to make Perl check that all
> subroutines are defined?
> By the way, neither 'use strict' nor 'perl -w' guards against
> undefined subroutines.

Actually, I think use strict will protect you in a very limited sense (my
memory is a little hazy on this, so you'll have to experiment to see if
I'm completely correct).  Strict will say something when you try to do

	my_sub $param, @params;

and it hasn't seen or imported something like

sub my_sub {

but if you put parens or & before your subroutine call it won't say

	&my_sub($param, @params);

But to answer your original question, I think you can do defined on a
subroutine name:

	You may also use defined() to check whether a subroutine exists,
	by saying defined &func without parentheses.
 _ _ _
 Bobby Kleemann <rkleeman at>


The posting address is: san-diego-pm-list at

List requests should be sent to: majordomo at

If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at> with the following
command in the body of your email message:

    unsubscribe san-diego-pm-list

If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at> .
This is the general rule for most mailing lists when you need
to contact a human.

More information about the San-Diego-pm mailing list