As a hidden simple (flat) array for multidimensional (2D) arrays

I have a Perl code:

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my $DF = "/usr/bin/df -Pk"; # HP-UX
my @temp = split /\n/, `$DF`;
shift @temp;
print Dumper \@temp;

      

And the result is something like below (shorter for better readability):

$VAR1 = [
          '/dev/vg00/lvol6       114224    46304    67920    41%     /home',
          '/dev/vg00/lvol7       8340704  4336752  4003952   52%     /opt',
          '/dev/vg00/lvol4       520952    35080   485872     7%     /tmp',
        ];

      

I want to convert an array @temp

(or create a new array) to a multidimensional (array of arrays) like this:

$VAR1 = [
          ['/dev/vg00/lvol6', 114224, 46304, 67920, '41%', '/home'],
          ['/dev/vg00/lvol7', 8340704, 4336752, 4003952, '52%', '/opt'],
          ['/dev/vg00/lvol4', 520952, 35080, 485872, '7%', '/tmp'],
        ];

      

Anyone help? Thank you in advance!:)

+3


source to share


2 answers


@temp = map [ split ], @temp ;

      



+7


source


This is how I will do it

my @lines = `$DF`;
my @data  = map { [split] } @lines;
print Dumper \@data;

      



This assumes there are no unexpected spaces in the path.

+1


source







All Articles