Documentation and Support

Download Lab::Measurement

Lab::Measurement allows to perform test and measurement tasks with Perl 5 scripts. It provides an interface to several instrumentation control backends, as e.g. Linux-GPIB or National Instruments' NI-VISA library. Dedicated instrument driver classes relieve the user from taking care of internal details and make data aquisition as easy as

$voltage = $multimeter->get_voltage();

The Lab::Measurement software stack consists of several parts that are built on top of each other. This modularization allows support for a wide range of hardware on different operating systems. As hardware drivers vary in API details, each supported one is encapsulated into Perl modules of types Lab::Bus and Lab::Connection. Normally you won't have to care about this; at most, your Instrument object (see below) gets different initialization parameters.

A typical measurement script is based on the high-level interface provided by the modules Lab::Instrument and Lab::Measurement. The former silently handles all the protocol overhead. You can write commands to an instrument and read the result. Drivers for specific devices are included, implementing their specific command syntax; more can easily be added to provide high-level functions. The latter includes tools to automatically generate measurement loops, for metadata handling (what was that amplifier setting in the measurement again?!), data plotting, and similar.

While Lab::Measurement has built-in support for devices connected, e.g., via ethernet, serial port, or the Linux USB Test&Measurement kernel driver, you may want to additionally install driver backends such as Lab::VISA or LinuxGPIB.



How to obtain

Lab::Measurement is free software and can be downloaded from CPAN. The source code archive can be found at Github, where you can also obtain the newest pre-release code and browse the version history. If you would like to contribute, just send us your patches, merge requests, ... :) For browsing the code we also have a direct gitweb access.


Quite some documentation of Lab::Measurement is available. This documentation includes a tutorial on using Lab::Measurement (outdated). Detailed installation instructions are provided as well. In addition, there's also a collection of back-end specific documentation and links.


Lab::Measurement is a the result of a full restructuring of the code of its predecessor Lab::VISA. Some time ago a new high-level interface, named Lab::XPRESS, was added. It provides for example automated measurement loops; check the XPRESS example scripts on the documentation page. This has now stabilized and replaced the previous Lab::Measurement high level interface fully in our applications. Since the old high level interface is not being used anymore, starting with upcoming 3.600 release we will remove it to keep the package size maintainable. In general, if you want to use Lab::Measurement, it definitely helps to get in touch with us and contribute patches.

Lab::Measurement is currently developed and employed at the carbon nanotube transport and nanomechanics group, Uni Regensburg. Previously it has been used at, e.g., LMU M√ľnchen and Weizmann Institute of Science, and we have heard about further applications in industrial r&d environments. Feel free to try it, to hack, and to send us your improvements and bugfixes.

Authors and history

The Lab::VISA system was originally developed by Daniel Schröer and continued by Andreas K. Hüttel, Daniela Taubert, and Daniel Schröer. Most of the documentation was written by Daniel Schröer. In 2011, the code was refactored mostly by Florian Olbrich to include the Bus and Connection layers; subsequently the name of the entire package collection was changed to Lab::Measurement. David Kalok, Hermann Kraus, and Alois Dirnaichner have contributed additional code. The new Lab::XPRESS layer was contributed by Christian Butschkow, Stefan Geissler and Alexei Iankilevitch; current development is pushed ahead by Simon Reinhardt.


The continued improvement of Lab::Measurement was supported by the Deutsche Forschungsgemeinschaft via grants Hu 1808/1 (Emmy Noether program), collaborative research centre SFB 689, and graduate research school GRK 1570.

Emmy Noether logo SFB 689 logo GRK 1570 logo