6.7 Using Perl

If MASTER_SITES is set to MASTER_SITE_PERL_CPAN, then the preferred value of MASTER_SITE_SUBDIR is the top-level hierarchy name. For example, the recommended value for p5-Module-Name is Module. The top-level hierarchy can be examined at cpan.org. This keeps the port working when the author of the module changes.

The exception to this rule is when the relevant directory does not exist or the distfile does not exist in that directory. In such case, using author's id as MASTER_SITE_SUBDIR is allowed.

All of the tunable knobs below accept either YES or a version string like 5.8.0+. YES means that the port can be used with any of the supported Perl versions. If a port only works with specific versions of Perl, it can be indicated with a version string, specifying a minimum version (e.g., 5.7.3+), a maximum version (e.g., 5.8.0-) or an exact version (e.g., 5.8.3).

Table 6-5. Variables for Ports That Use Perl

Variable Meaning
USE_PERL5 The port uses Perl 5 to build and run.
USE_PERL5_BUILD The port uses Perl 5 to build.
USE_PERL5_RUN The port uses Perl 5 to run.
PERL The full path of the Perl 5 interpreter, either in the system or installed from a port, but without the version number. Use this if you need to replace ``#!''lines in scripts.
PERL_CONFIGURE Configure using Perl's MakeMaker. It implies USE_PERL5.
PERL_MODBUILD Configure, build and install using Module::Build. It implies PERL_CONFIGURE.
Read only variables  
PERL_VERSION The full version of Perl installed (e.g., 5.8.9).
PERL_LEVEL The installed Perl version as an integer of the form MNNNPP (e.g., 500809).
PERL_ARCH Where Perl stores architecture dependent libraries. Defaults to ${ARCH}-freebsd.
PERL_PORT Name of the Perl port that is installed (e.g., perl5).
SITE_PERL Directory name where site specific Perl packages go. This value is added to PLIST_SUB.

Note: Ports of Perl modules which do not have an official website should link to cpan.org in the WWW line of pkg-descr. The preferred URL form is http://search.cpan.org/dist/Module-Name/ (including the trailing slash).

Note: Do not use ${SITE_PERL} in dependency declarations. Doing so assumes that bsd.perl.mk has been included, which is not always true. Ports depending on this port will have incorrect dependencies if this port's files move later in an upgrade. The right way to declare Perl module dependencies is shown in the example below.

Example 6-1. Perl Dependency Example

p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee
For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.