- 1 Vapor IO Brings OpenDCRE to General Availability
- 2 VMware Takes the Wraps Off vRealize Automation and vRealize Business
- 3 Microsoft Previews Hyper-V Containers for Windows Server 2016
- 4 Mirantis Led FUEL Project Gets Installed Under OpenStack Big Tent
- 5 Red Hat Enterprise Linux 7.2 Adds Security, DR Features
Making Linux Server Directories More Readable, Add to Perl's @INC Array
You're most likely to have encountered the Perl @INC array in the context of a "cannot find module" error. This is the list of directories Perl searches when looking for a module. To see a list of what's in @INC, try this one-liner:
|Tip of the Trade: Anyone who has encountered the Perl @INC array in the context of a 'cannot find module' error knows the value of being able to see a list of directories on you Linux server. Here's how to access @INC and find obscurely located modules before they are lost. |
perl -e 'print join "n",@INC'
Note that it includes ., the current working directory. In some cases, it also includes /etc/perl, which can be a good location for user-written modules.
If you're using CPAN as root, or installing modules as packages from your distribution, everything will wind up in the Right Place automatically. If you have root access, you can also add your own modules by hand. However, it's not actually possible to change @INC permanently without recompiling, and you will always have root access.
Here are a handful of other ways to make Perl find a module that's installed in a non-standard location.
- Probably the most common way of doing this is use lib. Put
this line somewhere near the top of your script, along with the references
to any other modules you're using:
then use whichever modules you want from that directory.
use lib '/home/juliet/perl/libs';
- On the command line, you can use -I, which is good for
This also works with a script:
perl -I/home/juliet/perl/libs -e 'code goes here'
but in that case you're probably better off with use lib.
perl -I/home/juliet/perl/libs myscript
- You can also set the PERL5LIB environment variable:
(bash syntax). Add this to ~/.bashrc to avoid having to reference your library directory in every Perl script you write.
Of course, because this is Perl, there are other ways to do it. Feel free to experiment!
Juliet Kemp has been messing around with Linux systems, for financial reward and otherwise, for about a decade. She is also the author of "Linux System Administration Recipes: A Problem-Solution Approach" (Apress, 2009).