Perl: How to Write a Module

By Xah Lee. Date: . Last updated: .

Here's to write a module in Perl by a example.

Save the following 3 lines in a file and name it mymodule.pm.

# -*- coding: utf-8 -*-
# perl

package mymodule;    # declaring the module

sub f1($){$_[0]+1}  # module body

# more code here

1                               # module must return a true value

Then, call it like the following way:

# -*- coding: utf-8 -*-
# perl

use mymodule;            # import the module
print mymodule::f1(5);   # call the function

This is the simplest illustration of writing a package in Perl and calling its function.

Module vs Package

A “module” is simply a file of Perl code. To load a module, use require name;.

package is a Perl keyword. When a file has declaration package name;, it creates its own namespace, and the file must must return a value true (any number, string, as the last line will do).

Basically, all Perl modules intended to be used as library, are declared as packages.

The word “module” and “package” are often used interchangably to mean “library”. Sometimes in a technical context, the word “module” refers to a file, and the word “package” refers to the namespace.

Module File Path Correspondence

Module/package name corresponds to the file's name/path. For example, if you have a module at

abc.pm

you load it like this:

use abc;

module file can be grouped into directories. If you have a module with subdirs, named:

GameX/sound.pm

you can load it like this

use GameX::sound;

The double colon :: corresponding to directory separator /.