#!/usr/bin/perl
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";
for (`cat /proc/mounts`)
{
($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
$fsname =~ s!/!\\/!g;
print "\t,\n" if not $first;
$first = 0;
print "\t{\n";
print "\t\t\"{#FSNAME}\":\"$fsname\",\n";
print "\t\t\"{#FSTYPE}\":\"$fstype\"\n";
print "\t}\n";
}
print "\n\t]\n";
print "}\n";
($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
open my $F, '<', '/proc/mounts' or die "open() error: $!\n";
my ($fsname, $fstype, %result);
while (<$F>)
{
($fsname, $fstype) = (split /\s+/)[1, 2];
#$fsname =~ s!/!\\/!g;
push @{$result{'data'}}, {'{#FSNAME}' => $fsname, '{#FSTYPE}' => $fstype};
}
close $F;
print JSON->new->pretty->encode (\%result);
($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
``
возвращает список строк. В цикле for
каждая строка неявно попадает в специальную переменную $_
. Следующая операция m//
также неявно работает с этой переменной. В явном виде цикл будет выглядеть так:for my $_ (`cat /proc/mounts`) {
($fsname, $fstype) = $_ =~ m/\S+ (\S+) (\S+)/;
...
}