Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
Where do Perl modules load from

When you're writing a Perl program, you're strongly encouraged to use existing code that's already been written to perform common functions. Not only does this save you time re-coding, but it also means you get code that's already tested and proven, and there's only one piece of code to be maintained for each piece of functionallity thereafter rather than two.

Shared (re-used) code may come as part of the Perl distribution - modules like Carp and File::Compare. It may be more specialist code that you download from the CPAN - for example DBI and DBD. Or it may be code that's just shared within your organisation or even just your department or between your personal applications. And in all cases, you "pull" the code into your program with a use statement:

use Carp;
use File::Compare;
use toothbrush;


Where does your Perl program load these modules from? It uses the list @INC which is prepopulated with each of the directories where Perl should look in turn. If you want to add some directories from the command line too, you can use the -I option to perl (see man perlrun for details. But what if you want to add an extra directory or two in your program? You're allowed to change @INC right enough, but even if you do so ahead of your use statement you'll be too late because the use is interpretted at compile time.

Solution? Modify your @INC list in a BEGIN block, since BEGIN blocks are interpretted at compile time too. Here's an example:

BEGIN {
push @INC,"extrabitz";
}

use toothbrush;


The directory "extrabitz" (a subdirectory of the current directory when the program is run) is added onto the end of the list of places for Perl to look ... and in this case, that's probably where it will find "toothbrush".

And if you even wonder what your Perl program has loaded from where, the information is available to you in the %INC hash. Perhaps that should be another day's story!


(written 2005-06-24, updated 2006-06-05)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P209 - Subroutines in Perl
  [3833] Learning to use existing classes in Perl - (2012-08-10)
  [3574] Perl functions such as chop change their input parameters - (2012-01-10)
  [3066] Separating groups of variables into namespaces - (2010-11-24)
  [2929] Passing a variable number of parameters in to a function / method - (2010-08-20)
  [2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
  [2550] Do not copy and paste code - there are much better ways - (2009-12-26)
  [2069] Efficient calls to subs in Perl - avoid duplication, gain speed - (2009-03-07)
  [1921] Romeo and Julie - (2008-12-04)
  [1860] Seven new intermediate Perl examples - (2008-10-30)
  [1850] Daisy the Cow and a Pint of Ginger Beer - (2008-10-21)
  [1826] Perl - Subs, Chop v Chomp, => v , - (2008-10-08)
  [1784] Global - Tcl, PHP, Python - (2008-09-03)
  [1782] Calling procs in Tcl and how it compares to Perl - (2008-09-02)
  [1202] Returning multiple values from a function (Perl, PHP, Python) - (2007-05-24)
  [1163] A better alternative to cutting and pasting code - (2007-04-26)
  [969] Perl - $_ and @_ - (2006-12-07)
  [775] Do not duplicate your code - (2006-06-23)
  [588] Changing @INC - where Perl loads its modules - (2006-02-02)
  [531] Packages in packages in Perl - (2005-12-16)
  [308] Call by name v call by value - (2005-05-11)
  [96] Variable Scope - (2004-10-22)

P219 - Perl - Libraries and Resources
  [3377] What do I mean when I add things in Perl? - (2011-08-02)
  [3101] The week before Christmas - (2010-12-23)
  [3009] Expect in Perl - a short explanation and a practical example - (2010-10-22)
  [2931] Syncronise - software, trains, and buses. Please! - (2010-08-22)
  [2427] Operator overloading - redefining addition and other Perl tricks - (2009-09-27)
  [2234] Loading external code into Perl from a nonstandard directory - (2009-06-12)
  [2229] Do not re-invent the wheel - use a Perl module - (2009-06-11)
  [1865] Debugging and Data::Dumper in Perl - (2008-11-02)
  [1863] About dieing and exiting in Perl - (2008-11-01)
  [1444] Using English can slow you right down! - (2007-11-25)
  [1391] Ordnance Survey Grid Reference to Latitude / Longitude - (2007-10-14)
  [1235] Outputting numbers as words - MySQL with Perl or PHP - (2007-06-17)
  [1219] Judging the quality of contributed Perl code - (2007-06-06)
  [760] Self help in Perl - (2006-06-14)
  [737] Coloured text in a terminal from Perl - (2006-05-29)
  [712] Why reinvent the wheel - (2006-05-06)
  [358] Use standard Perl modules - (2005-06-25)
  [112] Avoid the wheel being re-invented by using Perl modules - (2004-11-08)
  [86] Talk review - Idiomatic Perl, David Cross - (2004-10-12)


Back to
Sudoku helper or sudoku cheat
Previous and next
or
Horse's mouth home
Forward to
Use standard Perl modules
Some other Articles
Binary Large Objects or bars
Spring turns to Summer
Chicken soup without the religion
Where do Perl modules load from
Sudoku helper or sudoku cheat
Context in Perl
Ballooning from Bath
Wimbledon Neck
Improved mining techniques!
4300 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2014: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/357_Wher ... -from.html • PAGE BUILT: Thu Sep 18 15:30:25 2014 • BUILD SYSTEM: WomanWithCat