|

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
|