Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Ishodniki.Ru »
Online книги »
Perl книги »
Perl = простота Basic + мощь Cи++Дескриптор каталогаДля названий дескрипторов каталогов, так же как для дескрипторов файлов, нельзя выбирать зарезервированные слова, их рекомендуется набирать прописными буквами. Причем дескриптор файла FRED и дескриптор каталога FRED не связаны между собой. В Perl имеется несколько функций, позволяющих работать с каталогами. Можно создать каталог с помощью функции mkdir(), стереть — с использованием rmdir (), а для перемещения по дереву каталогов служит chdir(). Чтобы получить список файлов, находящихся в каком-либо каталоге, используются функции: opendir(), readdir() и closedir().Ниже приведена программа, показывающая, как вывести список всех Perl-программ, оканчивающихся на pl в текущем каталоге: opendir(DIR, ”.”); # открыть каталог @files = sort(grep(/pl$/, readdir(DIR))); # массив файлов closedir(DIR); # закрыть каталог foreach (@files) { print(”$_\n”) unless -d; # выводит список файлов } Алгоритм ее работы таков:
Функция chdir в Perl имеет один аргумент типа выражения. При его вычислении определяется имя текущего каталога. В случае его успешного изменения возвращается значение true, а при неудачном — false. Например, чтобы перейти в корень дерева каталогов и вывести там список всех файлов, нужно сделать следующее: chdir (”/”) || die ”Невозможно перейти в / ($!)”; opendir(DIR, ”.”); @files = sort(grep(/$_/, readdir(DIR))); closedir(DIR); foreach (@files) { print(”$_\n”) unless -d; } Круглые скобки после chdir ставить необязательно. Синтаксис функции создания каталога: mkdir (DIRNAME, MODE), где DIRNAME — имя каталога, заключенное в кавычки, а MODE — права доступа. Так, чтобы создать каталог MYDIR, всем доступный и предоставляющий равные права, необходимо ввести команду mkdir (”MYDIR”, 0777) || die ”Невозможно создать MYDIR: $!”; Если требуется удалить каталог, на помощь придет функция rmdir: rmdir (”MYDIR”) || die ”Невозможно удалить MYDIR: $!”; Эта Unix-команда позволяет удалять только пустые каталоги. В Unix, как и в Windows NT, есть такое понятие, как право доступа к файлам и каталогам. С помощью функции chmod() можно устанавливать для файлов уникальные атрибуты. Например, чтобы сделать файлы «1.txt» и «2.txt» доступными для чтения и записи всем пользователям, нужно выполнить операцию chmod (0666, ”1.txt”, ”2.txt”); Восьмеричное число, находящееся в круглых скобках, — цифровое представление режима доступа, а цифра 0666 обозначает чтение и запись для всех пользователей. Чтобы изменить права доступа к файлам «1.txt» и «2.txt» и проконтролировать ошибки, нужно использовать следующую конструкцию: foreach $files (”1.txt”, ”2.txt”) { unless chmod (0666, $files) { warn ”Невозможно изменить права доступа для $files.\n$!”; } } Каждый файл и каждый каталог обладают двумя параметрами — «владелец» и «группа», которые определяют, кому принадлежат права доступа, установленные для файла по категориям (чтение, запись и/или создание). Значения параметров выявляются при создании файла. Покажем, как можно изменять их для списка файлов. Первые два элемента списка должны представлять собой числовой UID (идентификатор пользователя) и GID (идентификатор группы): $cnt = chown $uid, $gid, ‘foo’, ‘bar’; chown $uid, $gid, @filenames; Успешному выполнению операции соответствует ненулевое значение, равное числу файлов, принадлежность которых изменена (как в функции chmod). В листинге 1 приведен пример поиска нечисловых UID в файле passwd. Листинг 1 print ”Пользователь: ”; $user = Существуют также операции переименования и удаления файлов. Во втором случае используют функцию unlink(), которая убирает все файлы из списка, заданного в качестве параметра, и возвращает список успешно удаленных: $cnt = unlink ‘1.txt’, ‘2.txt’, ‘3.txt’; или @goners = (‘1.txt’, ‘2.txt’, ‘3.txt’); unlink @goners; или unlink <*.txt>; Функция unlink() не позволяет убирать каталоги, если пользователь не обладает правами администратора системы. Учтите, что ее следует применять крайне осторожно, а при работе с каталогами целесообразно предпочесть rmdir (). Чтобы переименовать файл, нужно воспользоваться функцией rename. При успешном выполнении она возвращает результат, равный 1, иначе 0. С помощью этой функции можно также переносить файлы из одного каталога в другой, например: rename (”e:/1.txt”,”d:/1.txt”); или rename (”/docs/1.txt”,”/docs/add/1.txt”); Если же вы хотите просто переименовать какой-то файл, то пути к файлам должны совпадать, например: rename (”1.txt”,”2.txt”); Существуют и другие команды для работы с файлами. О них более подробно можно узнать из источников информации, приведенных в конце статьи. Назад | Содержание | Вперед |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Рейтинги
|