Обозначение | Режим открытия | Пример использования |
---|---|---|
< | Чтение (существующего файла с начала) | open($fh, ' |
> | Перезапись (с начала файла) | open($fh, '>/temp/buffer.txt') |
>> | Дозапись (в конец файла) | open($fh, '>>/temp/buffer.txt') |
+< | Чтение и запись (файл должен существовать) | open($fh, '+ |
+> | Запись и чтение (файл усекается) | open($fh, '+>/temp/buffer.txt') |
+>> | Дозапись и чтение | open($fh, '+>>/temp/buffer.txt') |
Применяются две формы записи функции
open $fh, '
Программисты, знающие язык C, могут воспользоваться для открытия потоков функцией
perldoc perlopentut
Связь файлового манипулятора в программе с обрабатываемым файлом разрывается функцией закрытия потока
close(FILE) or die("Ошибка при закрытии файла: $!\n");
close $handle or die "Ошибка закрытия файла: $!\n";
В новой многоуровневой подсистеме ввода-вывода Perl предусматривает при открытии потока вместе с режимом открытия указывать кодировку читаемых и записываемых данных, что позволяет автоматически преобразовывать информацию из одной кодировки в другую, например, так:
open my $in, "<:encoding(UTF-8)", 'utf8.txt' or die;
open my $out, ">:encoding(cp1251)", 'cp1251 .txt' or die;
while(<$in>){ print $out $_; }
close $in or die;
close $out or die;
В некоторых операционных системах (например, в MS-DOS), после открытия файла, но перед чтением двоичных данных требуется установить для файлового манипулятора режим работы с двоичными данными с помощью функции
В огромном числе случаев ввод данных в Perl-программу и вывод из нее результатов производится построчно, а для разделения строк файла используется разделитель входных записей, хранящийся в специальной переменной
$input = <>; # чтение строки в $input из STDIN
$line =
Операция чтения "кристалл" в скалярном контексте возвращает одну строку вместе с разделителем записей, а когда достигается конец файла, она возвращает неопределенное значение
open my $fh, "< $file" or die "Ошибка открытия: $!";
while (my $line = <$fh>) { # чтение строки в переменную $line
chomp $line; # удаление разделителя строк
print length $line, " $line\n"; # обработка строки
}
close $fh or die "Ошибка закрытия: $!";
Операция чтения "кристалл" в списочном контексте возвращает список всех строк с разделителями записей. Так, например, можно считать файл в массив, попутно отсортировав его:
@lines= sort(<$fh>); # в @lines отсортированные строки из $fh
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии