Re all!
Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем как всё это туда писать, необходимо определить: а хватит ли места на файловой системе ? Вопрос: как это сделать ? Желатьно без CPAN модулей.P.S. Скрипт должен работать и под unix и под win.
Подскажите, plz, кто уже делал.
>Re all!
>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>как всё это туда писать, необходимо определить: а хватит ли места
>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>CPAN модулей.
>
>P.S. Скрипт должен работать и под unix и под win.
>Подскажите, plz, кто уже делал.Для никсов можно было бы парсить вывод df
df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 128990 91458 27214 77% /
/dev/ad0s1f 257998 14902 222458 6% /tmp
/dev/ad0s1g 18579892 6398718 10694784 37% /usr
/dev/ad0s1e 257998 59620 177740 25% /var
procfs 4 4 0 100% /procДля винды - не знаю... Разве что парсить вывод команды DIR типа bytes free или что-нибудь в этом...
>>Re all!
>>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>>как всё это туда писать, необходимо определить: а хватит ли места
>>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>>CPAN модулей.
>>
>>P.S. Скрипт должен работать и под unix и под win.
>>Подскажите, plz, кто уже делал.
>
>Для никсов можно было бы парсить вывод df
>df
>Filesystem 1K-blocks Used Avail Capacity
> Mounted on
>/dev/ad0s1a 128990 91458 27214
> 77% /
>/dev/ad0s1f 257998 14902 222458
> 6% /tmp
>/dev/ad0s1g 18579892 6398718 10694784 37%
>/usr
>/dev/ad0s1e 257998 59620 177740
> 25% /var
>procfs
> 4 4
> 0 100%
> /proc
>
>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>bytes free или что-нибудь в этом...В том-то всё и дело, что скрипт должен быть универсальным и работать в любой оси. В php есть функция diskfreespace() - она это может.
Может кто-нибудь знает её аналог for perl ?
Я нашёл только Filesys::DiskFree на CPAN, но этот модуль, как я понял из исходников, под виндами тоже пахать не будет. Там, как раз способ предложенный вами - с `df`.
>>>Re all!
>>>Есть директория, в неё предстоит писать много-много файлов из perl-скрипта. Перед тем
>>>как всё это туда писать, необходимо определить: а хватит ли места
>>>на файловой системе ? Вопрос: как это сделать ? Желатьно без
>>>CPAN модулей.
>>>
>>>P.S. Скрипт должен работать и под unix и под win.
>>>Подскажите, plz, кто уже делал.
>>
>>Для никсов можно было бы парсить вывод df
>>df
>>Filesystem 1K-blocks Used Avail Capacity
>> Mounted on
>>/dev/ad0s1a 128990 91458 27214
>> 77% /
>>/dev/ad0s1f 257998 14902 222458
>> 6% /tmp
>>/dev/ad0s1g 18579892 6398718 10694784 37%
>>/usr
>>/dev/ad0s1e 257998 59620 177740
>> 25% /var
>>procfs
>> 4 4
>> 0 100%
>> /proc
>>
>>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>>bytes free или что-нибудь в этом...
>
>В том-то всё и дело, что скрипт должен быть универсальным и работать
>в любой оси. В php есть функция diskfreespace() - она это
>может.
>Может кто-нибудь знает её аналог for perl ?
>Я нашёл только Filesys::DiskFree на CPAN, но этот модуль, как я понял
>из исходников, под виндами тоже пахать не будет. Там, как раз
>способ предложенный вами - с `df`.Можно сначала узнавать имя OS
print $^O
Че нить типа
#!/usr/bin/perl -w
if ($^O eq "freebsd") {
# Do df stuff
print "FREEBSD\n";
}
elsif ($^O eq "MSWin32") {
# Do dir stuff
print "WINDOWS\n";
}
else {
print "OS not supported\n";
}
Не претендую на оригинальность =)
>>>Для винды - не знаю... Разве что парсить вывод команды DIR типа
>>>bytes free или что-нибудь в этом...
>>
>>В том-то всё и дело, что скрипт должен быть универсальным и работать
>>в любой оси. В php есть функция diskfreespace() - она это
>>может.
>
>Можно сначала узнавать имя OS
>print $^O
>Че нить типа
>#!/usr/bin/perl -w
>if ($^O eq "freebsd") {
># Do df stuff
>print "FREEBSD\n";
>}
>elsif ($^O eq "MSWin32") {
># Do dir stuff
>print "WINDOWS\n";
>}
>else {
>print "OS not supported\n";
>}
>
>
>Не претендую на оригинальность =)
Я это как раз и имел в виду - для каждой оси написать отдельную процедуру определения freespace. Для никсов парсить df, для винды парсить DIR
Вобщем не стал я ничего изобретать и сделал так как все тут и советуют - смотрю ОС, если БСД - парсю df, если win - парсю dir, если др. ОС - return 0;
но для меня всё равно загадка: как же это всё реализовано в php-шной diskfreespace() ?