Re: What are Modules
by dragonchild (Archbishop) on Dec 07, 2001 at 20:11 UTC
|
A module is a collection of functions that is used in multiple programs. You would use a module in different ways, depending on the way it's implemented.
- A class for an OO system
- A repository of functions, with Exporter
CPAN is the Comprehensive Perl Archive Network. Among many other purposes, it serves as a repository for useful modules. Some of the ones you'll hear a lot about are CGI, Class::*, and Devel::*.
You would download a module from CPAN and install it, using the instructions that came with the module.
As for more info, I suggest purchasing Programming Perl, 3rd edition. There's a number of chapters there about modules and a whole chapter on CPAN.
------ We are the carpenters and bricklayers of the Information Age. Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement. | [reply] |
Re: What are Modules
by mirod (Canon) on Dec 07, 2001 at 20:12 UTC
|
I think the first thing you need to learn is how to use the documentation that comes with Perl: try the following:
perldoc
Which leads you to:
perldoc perldoc
Which should lead you to:
perldoc -q module
and to:
perldoc perlmod
Note that man perl would also lead you to this information and that on Windows Active Perl also comes with the doc.
Of course you can also use the Search on this site, but this should get you started!
| [reply] [d/l] [select] |
Re: What are Modules
by George_Sherston (Vicar) on Dec 07, 2001 at 21:08 UTC
|
I'd just like to add one more answer to the question "what are modules?", namely
"worth taking the time to learn about"
My first six months working with Perl I took the attitude that by the time I'd figured out each new module I could have done the work myself. It was a painful learning process. I now have the zeal of the convert, and my first instinct when I come up with a new problem is to browse CPAN. My advice, FWIW, is, if in doubt assume there's a module that will do it for you.
In particular, if you're working with databases, I'd encourage you to check out DBI.pm, which makes a lot of things a different order of magnitude easier, and even makes some problems go away altogether (here's just one example of what I mean).
Remember it's a J curve... you go a LONG way up for a very little dip at the start. I've tried both ways, and I know which I like better!
§ George Sherston | [reply] |
|
George,
I agree with you, but I also think it is important for a newbie not to rely too much on modules because even though it will take more time to write your own code, I feel you learn Perl faster this way. This was the case when I started out. People were suggesting modules left and right and I said to myself "How am I going to learn this stuff if all I'm doing is using other people's code?"
Now that I have a better grasp on Perl, I find myself using CPAN much more. I would suggest to a newbie to try and write the code themselves first and then check out CPAN to see if a module can do something they want better/faster (which is usually the case).
Hope I don't get flamed for this, but this is the approach that I took.
-Dru
| [reply] |
|
| [reply] |
|
It's a balance, really, IMHO. One needs to have an idea how the modules work otherwise one can't use them intelligently. But at the same time one has to let them do the work otherwise there's no point. But my guess is that most beginners err on the side of *not* using modules, and will always find ways to practice their skills by re-inventing a whole load of wheels. I too learnt a fair amount by rolling my own, but I think I would have learnt other things quicker, and been more productive, if I'd made the jump to modules sooner.
Also, a fab way to learn good programming style is to look at how the modules do it. So instead of learning by rolling one's own, one can learn by getting to grips with the real thing.
§ George Sherston
| [reply] |
Re: What are Modules
by xunker (Beadle) on Dec 07, 2001 at 23:40 UTC
|
Let's take things ong at a time, eh? I think you're going to want explainations in basic terms, and that's what I'm good at -- writing things in painfully terse form :)
* What is a module? - A module is basically a collection of subrouties that is not a program by itself, but is used by other programs. It's all about code recuse and astetics. The calling program accesses and uses the subrouting inside the module.
* How do i use it - You just said it: use module_name; or require module_name; Use and Require are similar but have different nuances, so 'use' would be your best bet. Put 'em up near the begining of the program.
* What is CPAN? - CPAN: A networked storage system of Perl Modules. It combines the Storage of the modules, managment and instalation into come seamless package. When people say 'use CPAN', they usually mean do (as root usually) "perl -MCPAN -e shell", which gets you into the CPAN shell where you can install perl modules with a few keystrokes. You want to install NET::IRC? Just type 'install NET::IRC'. It's very slick.
Module != CPAN. You can write you own modules in your own code, and I recommend that you do. CPAN is just a repostory of Generic and useful modules other people have written.
* how does it tie into a module - If you write a module that is usful enough that others would like it, you can bundle it up and put it on the CPAN network for other people to use.
* is their someplace here that can teach me all about modules and using them? - Here would be a great place to start. Using modules is pretty easy, you've probably already seen it/done it and not even known it. Making modules is harder, but worth learning if you want to write high-quality code.
| [reply] |
Re: What are Modules
by scain (Curate) on Dec 07, 2001 at 20:31 UTC
|
Once you read a little more about CPAN and want to install
modules, try the command perl -MCPAN -e shell
which can make installing modules a breeze (on unix systems,
I think there is something different to do with windows, but
I don't mess with those boxes).
Scott | [reply] [d/l] |
Re (tilly) 1: What are Modules
by tilly (Archbishop) on Dec 08, 2001 at 23:47 UTC
|
As a beginner, what is probably going to be most helpful
is a template to cargo-cult from. When you have read all
of the other resources, you will understand what all the
pieces here do. But this is a "quick start".
Now I am going to suppose that you have a place somewhere
to put your library of Perl stuff you are developing.
For the sake of argument that will be "/your/library/path".
Now let's create the Foo::Bar module. Create the file
"/your/library/path/Foo/Bar.pm". Into it put this:
package Foo::Bar;
use Exporter;
@ISA = 'Exporter';
# This is a list of functions you are willing to export.
@EXPORT_OK = qw( hello );
use strict; # of course
# Functions go here. Let's be traditional
sub hello {
print "Hello, World\n";
}
1;
Now in each script where you might want to be able to
"hello", put in the following two lines:
use lib "/your/library/path";
use Foo::Bar qw(hello);
And after that you can call the function "hello"
freely.
Now why would you do this? Well the classic syndrome
that I see in shell programmers who pick up Perl is that
they convert a mess of shell scripts into Perl scripts,
and have the Perl scripts call each other like you would
in shell. This leaves you with all of the limitations of
shell programming, like difficulty handling errors, problems
passing around structured data, etc.
What works better
in my experience is to take your scripts and write each
one as above as a module. Then you can replace the scripts
with trivial ones that load up the right module, and call
one function in it. But now when your scripts want to call
on each other's functionality they can just load up the
the right modules and call functions rather than execute
external scripts. This gives you all of the flexibility,
better performance, and opens up the door later for you
to improve how you do your error handling or get fancier
in how you store and pass data...
Now be warned as you go off that what I have given is but
one common form of module. There are others. And you can
easily get fancier (eg by using pod). But this
should be enough to actually go and try writing some... | [reply] [d/l] [select] |
Re: What are Modules
by ddrumguy (Acolyte) on Dec 07, 2001 at 20:35 UTC
|
Thanks. no perl man pages here at work. will need to do a bit of research at home. From a newbie perspective it may be helpful to add modules and a brief explanation of them (as one of the responses stated) in the newbie sections of this site. Heading to the CPAN url now to learn more ...
thanks!
bob | [reply] |
|
If your saying that perl is installed, but you don't have any man pages, i.e. if 'perldoc perl' or
'man perl' doesn't work, then something is broken. Or maybe the perl you run linked to another directory not in your path. (does 'ls -l $(which perl)' indicate, e.g. that you're running /usr/local/bin/perl but its just a link to /opt/perl/bin/perl, and '/opt/perl/bin' is not in your
PATH, and '/opt/perl/man' is not in your MANPATH).
| [reply] |