Reading output from command into Perl array

command, perl

Solution

This simple script works for me:

#!/usr/bin/env perl
use strict;
use warnings;

my $cmd = "ls";    
my @output = `$cmd`;    
chomp @output;

foreach my $line (@output)
{
    print "<<$line>>\n";
}

It produced the output (except for the triple dots):

$ perl xx.pl
<<args>>
<<args.c>>
<<args.dSYM>>
<<atob.c>>
<<bp.pl>>
...
<<schwartz.pl>>
<<timer.c>>
<<timer.h>>
<<utf8reader.c>>
<<xx.pl>>
$

The output of command is split on line boundaries (by default, in list context). The `chomp` deletes the newlines in the array elements.

Problem

I want to get the output of a command into an array — like this: ``` my @output = `$cmd`; ``` but it seems that the output from the command does not go into the `@output` array. Any idea where it does go?

Original source