Perl для системного администрирования
508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.

Прогулка по файловой системе - часть 5


В Perl мы указываем встроенный ключ -s в строке вызова (#! /us г/с in, perl -s) для автоматического разбора параметров. Это самый простой способ разбора параметров, переданных в командной строке. Искушения ради, мы могли бы использовать какой-либо модуль из семейства Getopt. Если в командной строке присутствует ключ (например -г), то при запуске сценария устанавливается глобальная скалярная переменная с тем же именем (например $г). Если Perl вызывается без ключа -г, мы вернемся к старому поведению подпрограммы - она будет лишь сообщать, что найдены core-файлы.

Когда вы пишете автоматические утилиты, постарайтесь сделать так, чтобы разрушительные действия были затруднены. Учтите: Perl, как и большинство серьезных языков программирования, позволяет уничтожить файловую систему без особых усилий.

Теперь, чтобы ориентированные на NT/2000 читатели не подумали, что предыдущие примеры к ним не относятся, покажем, что эта программа может пригодиться и для них. Единственное изменение строки:

if (Sname eq "core") {

на:

if (Sname eq MSCREATE.DIR") {

позволяет создать программу, которая удалит все раздражающие скрытые файлы нулевой длины, забытые инсталляторами некоторых программ Microsoft.

Имея в запасе этот код, давайте вернемся к проблеме, с которой начиналась эта глава. После того как мой портативный компьютер приземлился на пол, средство, которое позволило бы определить, какие файлы можно прочитать с диска, а какие нет, стало необходимо мне, как воздух.

Вот какую программу я написал для этого:

use Cwd: # модуль для определения текущего рабочего каталога

$1=1; # отключаем буферизацию ввода/вывода

sub ScanDirectory {

my ($workair) = shift;

my($startdir) = &cwd;

ft запоминаем, откуда мы начали chdir($workdir)

or die "Невозможно зайти а каталог $workdir:$'\n":

opendir(DIR, ".")

or die "Невозможно открыть каталог $workdir:$!\n";

my @names = readdir(DIR);

closedir(DIR);

foreach my $name (@names){ next if ($name eq "."); next if ($name eq "..");




Начало  Назад  Вперед


508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.