Просмотр информации о разделах Linux [РЕШЕНО]

Привет всем.
Прошу помощи у знатоков, требуется получать информацио о разделах:
(имя устройства, точка монтирования, кол-во занятого пространства или процент)
Может есть спец функция или еще что. Сразу напишу что гугль не помог.
Делаю так:

@df = split("\n", `df -h`);
# тут обрабатываю @df

Может есть более красивое решение ?

Да, вариантов

Да, вариантов не много. Как мне кажется, парсить вывод df - не самый плохой вариант.
Что я нашел: прочесть /proc/partitions и дальше двигаться в сторону /etc/mtab
Более подробно: http://www.linuxquestions.org/questions/linux-general-1/procpartitions-d...

Ну и варинт для настоящих мужчин: посмотреть, как написан df: ftp://alpha.gnu.org/gnu/coreutils/

Смотреть как

Смотреть как написан df не очень разумно, потому что в другой версии может измениться формат системного вызова и вся собранная информация окажется бесполезна.
Да и я почти уверен, что df все равно смотрит в /proc, а народ уже много лет прикалывается что в Linux даже объем свободной памяти нужно смотреть через /proc (там просто нет очень многих вещей реализованных как системные вызовы).

Спасибо за

Спасибо за ответы, если кому интересно, сделал так:

print "Content-type: text/html; charset=UTF-8\n\n";
 
my @df = split("\n", `df -h`);
for (my $df_string = 0; $df_string < @df; $df_string++)
{     
    if ($df[$df_string] =~ m{/dev/[hs]d[ab]\d})
    {
        my ($name, $size, $used, $avail, $usePersent, $mountPoint) = split(' ', $df[$df_string]);
        print $name, " - "; bar($usePersent);
    }
}
 
sub bar
{
    my ($use_persent) = @_;
    $use_persent =~ /\d{1,3}/;
    $use_persent = $&;
        # предыдущие 2 строчки можно было заменить одной регуляркой s///, но как именно ?
 
    my $default_length = 25;
    my $bar_length = int($use_persent * $default_length / 100);    
 
    if ($use_persent >= 95) { 
        $color = "red";
    } 
    else {
        $color = "green";
    }
    my $bar_elements = "<td></td>" x $bar_length; 
    print qq(<table border=1>
    <tr bgcolor=$color>$bar_elements</tr>
    </table>);
}

Критикуйте код. ps: Хотел выводить как SVG, но забил. Так тоже сойдет.


по-моему так:

по-моему так: ($use_persent) = $use_persent =~ /(\d{1,3})/;

Да

Да, так ты захватываешь $1