"Perl for Perl Newbies" - Part 4Executing Other ProcessesTrapping Command Output with `...`

4.2. Trapping Command Output with `...`

The backticks (or more generally qx{ ... }), can be used to trap the output of a shell command. It executes the command and returns all of its output. Interpolation is used.

If assigned to a scalar, it returns the output as a complete string. If the output is assigned to an array, the array will contain the lines of the output.

Here is an example for a program that counts the number of directories in a directory that is given as an argument:


use strict;
use warnings;

my $dir = shift;
# Prepare $dir for placement inside a '...' argument
# A safer way would be to use String::ShellQuote
$dir =~ s!'!'\\''!g;

my $count = `ls -l '$dir' | grep ^d | wc -l`;

if ($?)
    die "Error returned by ls -l command is $@.";

if ($count !~ /(\d+)/)
    # Retrieve the number via the special regex variable $1
    $count = $1;
    print "There are $count directories\n";
    die "Wrong output."

Written by Shlomi Fish