CuTTer (icutter@mail.ru)

Perl для перцев

Xakep, номер #020, стр. 020-042-4


$some{"abc"}="cba";

$some{123}=321;

@all=keys(%some); # @all содержит значение ("abc", 123)

Если надо получить не ключи хеша, а их значения, то следует юзать функцию values. Она тоже возвращает список, который содержит все значения хеша.

И последнее, что я хотел рассказать про хеши, - это функция delete. Как, наверное, ты догадался, она удаляет один элемент в хеше по его индексу. Вот пример:

$some{look}=this

$some{change}=car

delete $some{change}; # хеш состоит всего из одного ключ-значения some=change

Работа с файлами: порежем филе

Дескриптор файла в Perl программах - это имя соединения для ввода-вывода между нашей Perl программой и внешний миром. Мы и раньше использовали дескрипторы: STDIN - это дескриптор стандартного ввода. Еще есть дескриптор STDOUT. Когда мы использовали команду print, то мы выводили все данные на дескриптор STDOUT. У файлов такие же дескрипторы, как и у ввода/вывода, они тоже пишутся большими буквами. Вот синтаксис присоединения дескриптора к файлу для его чтения:

open (ДЕСКРИПТОР, "имя");

ДЕСКРИПТОР - новый дескриптор файла, а "имя" - имя открываемого файла, которое будет связано с дескриптором. Чтобы файл открыть не для чтения, а для записи, используют тоже команду open, но перед именем файла добавляют знак больше чем (>). Вот как это выглядит:

open (ДЕСКРИПТОР, ">имя");

Что делать, если нам нужно дописывать в файл информацию? Тогда к имени файла надо добавить >>:

open (ДЕСКРИПТОР, ">>имя");

Функция open возвращает значения "истина", если она выполнена удачно, и "ложь", если произошла какая-то ошибка. После окончания работы с файлом нам нужно закрыть дескриптор файла, это делается командой close:

close (ДЕСКРИПТОР);

Если попытаться повторно открыть один дескриптор файла, то это приведет к автоматическому закрытию ранее открытого файла. Но что если файл не открылся? Нам же нужно грамотно обрабатывать все возможные ошибки, для этого нам понадобится оператор die:

open (DATA, ">new.txt") || die "Невозможно создать файл!";

Тут также используются конструкция "логическое или" (||), работает это так: если файл невозможно создать, то выводим ошибку и прерываем программу.

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

open (FILE, "some.txt");

while ($read=)

{

print $read;

}

closr (FILE);

После запуска программы на экране должен появиться листинг файла some.txt. Теперь напишем программу, которая копирует текстовые файлы:

$in="some.txt";

$out="copy.txt";

open (FILE, "$in");

open (OUT, ">$out");

while ($read=)

{

print OUT $read;

}

close (FILE);

close (OUT);

Мы научились работать с файлами, теперь нам нужно научиться проводить над файлом зловещую штуку, а именно - удаление. В перле для таких потребностей используется функция unlink. В качестве параметра используется имя файла, которое будет удалено:

print "имя файла, который вы хотите удалить: ";

Назад на стр. 020-042-3  Содержание  Вперед на стр. 020-042-5