The GDAL Perl bindings are distributed within the main GDAL source distribution but they are also available on CPAN as Geo::GDAL. They are maintained by Ari Jolma.


The documentation:

Geo::GDAL is a building block of the (now more or less retired) Geoinformatica stack. You can add processing tools written in Perl into QGIS using the Perl Processing Provider Plugin (also and

You may enable building a foreign function interface ("bindings") to GDAL for a specific supported language by using the option --with-perl (replace "perl" with your favorite language) with configure. The effect of this is that during the build process cd swig; make build is issued and all specified interfaces are built by make build in respective library (swig/perl in the case of Perl).

However, for Perl it is suggested that you do not use the --with-perl option but instead first build (or at least run ./configure at GDAL root to get GDALmake.opt) GDAL itself, then cd to swig/perl, issue make generate, and proceed as normal with Perl modules, i.e., perl; make; make test; make install. Generation of the bindings require swig, but chances are that there is a recent enough swig available for your system easily (hint: sudo apt-get install swig).

The Perl bindings for GDAL are generated from GDAL SWIG interface files with SWIG. The bindings are a set of .c and .cpp files and other files whose type depends on the language. In the case of Perl, these SWIG generated files are not stored in the repository. The bindings are generated by make generate. In the case of Perl, make build falls back to do make generate first if a wrapper file does not exist.

To rebuild wrappers make sure to remove the old ones by make veryclean first.

The Perl module version numbering differs from that of GDAL because Perl module version numbers are real numbers and GDAL uses semantic numbering (major.minor.patch). GDAL develops in branches, and there is a branch for each minor version. Perl module version numbering is the following.

GDAL branchGeo::GDAL module version

Where 'x' is an arbitrary string denoting the patch level.

The CPAN version for each branch may not be the latest since it may have a lower patch level than what is the current. To create a module with latest patches for a branch it is required to obtain a copy of that branch, either downloading a tarball or grabbing a repository snapshot svn co, configure GDAL, and proceed as explained above. However, there may be a very recent version of the module available at

For information how to build the Perl bindings in Windows (Strawberry Perl), go to Shawn Laffan's notes at

Last modified 3 months ago Last modified on Mar 7, 2017 11:13:25 PM