SPUG: Question -- use vs require

Trey Harris trey+spug at lopsa.org
Mon Aug 25 12:47:45 PDT 2008

In a message dated Mon, 25 Aug 2008, Christopher Howard writes:
> Hi.  I was hoping someone could clarify some small points for me.  I read 
> some on-line material, but I want to make sure I'm understanding things 
> correctly.
> 1. What is the difference between 'use' and 'require'?

% perldoc -f use
                It is exactly equivalent to

                    BEGIN { require Module; import Module LIST; }

                except that Module must be a bareword.

> 2. What is the advantage to using 'require' (if there is one)?

"The advantage" makes it sound like you should be preferring it; you 
shouldn't.  99%+ of the time, you want C<use>.

You can use C<require> in a string eval so the load happens at runtime 
rather than compile time (that's what the C<BEGIN> block is doing up 
there).  You can also use C<require> to prevent the C<import> method 
from being called (though ordinarily this isn't something you want to 
do, you should do a C<use Module qw();> instead to call C<import> with 
no arguments).

> 3. What are the implications for object-oriented programming?

That's a very broad question, but I don't think there are any 
implications of use vs. require for OOP versus any other type of 

Trey Harris                                          http://www.lopsa.org/
President, LOPSA   --     The League of Professional System Administrators
Opinions expressed above are not necessarily those of LOPSA.

More information about the spug-list mailing list