Latest web development tutorials

файловые операции Perl

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

Чтение или запись данных из файла требует использования дескрипторов файлов.

Ручка файла (дескриптор файла) является наименовании соединений ввода / вывода.

Perl предоставляет три файла ручками: STDIN, STDOUT, STDERR, представляющие стандартный ввод, стандартный вывод и стандартный вывод ошибок.

Perl файлы могут быть открыты в следующих способов:

open FILEHANDLE, EXPR
open FILEHANDLE

sysopen FILEHANDLE, FILENAME, MODE, PERMS
sysopen FILEHANDLE, FILENAME, MODE

Параметр Описание:

  • FILEHANDLE: дескрипторов файлов, используемых для хранения уникального идентификатора для файла.
  • EXPR: имя файла и тип доступа к файлу, состоящий из выражения.
  • РЕЖИМ: тип файла доступа.
  • Завивке: доступ Bit (биты прав доступа).

Открытая функция

Мы используем следующую функцию кода, чтобы открыть режим только для чтения (<), чтобы открыть файл file.txt:

open(DATA, "<file.txt");

<Только для чтенияпредставление.

Код файла DATA Ручка используется для чтения файла, следующий пример будет открыть файл и содержимое файла на выходе:

#!/usr/bin/perl

open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!";

while(<DATA>){
   print "$_";
}

Следующий код для записи (>) способ открыть файл file.txt:

open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";

> Для режима записи.

Если вам нужно открыть файл в режиме чтения-записи, перед> или <символ знак +, чтобы добавить:

open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";

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

open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";

Если вы хотите подать дополнительные данные, дополнительные данные перед тем, вам нужно всего лишь открыть файл в режиме добавления:

open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";

>> Представляет добавлять данные в существующий файл, если вам нужно прочитать содержимое файла, чтобы добавить, чтобы добавить знак +:

open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";

В следующей таблице перечислены различные режимы доступа:

режим описание
<Или г Открыть только для чтения указатель файла в заголовке файла.
> Или ж Открыть для записи указатель файла в заголовке файла и размер файла обрезается до нуля. Если файл не существует, делается попытка создать.
>> Или Открыть для записи указатель файла в конец файла. Если файл не существует, делается попытка создать.
+ <Или г + Открыть для чтения и записи, указатель файла в заголовке файла.
+> Или ш + Открыть для чтения и записи, указатель файла в заголовок файла и размер файла обрезается до нуля. Если файл не существует, делается попытка создать.
>> + Или + Открыть для чтения и записи указатель файла в конец файла. Если файл не существует, делается попытка создать.

функция SysOpen

ФункцияSysOpen аналогична открыть функцию, но они не являются такими же формой аргумента.

Следующий пример основан на чтение и запись (+ <имя файла) способ, чтобы открыть файл:

sysopen(DATA, "file.txt", O_RDWR);

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

sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );

Вы можете использовать O_CREAT, чтобы создать новый файл, O_WRONLY записи только режим, O_RDONLY режим только чтения.

Параметры завивке восьмеричное значение свойства указывает на то, что права доступа к файлам после создания, по умолчанию0x666.

В следующей таблице перечислены возможные значения режима:

режим описание
O_RDWR Открыть для чтения и записи, указатель файла в заголовке файла.
O_RDONLY Открыть только для чтения указатель файла в заголовке файла.
O_WRONLY Открыть для записи указатель файла в заголовке файла и размер файла обрезается до нуля. Если файл не существует, делается попытка создать.
O_CREAT Создайте файл
O_APPEND Append File
O_TRUNC Размер файла режется до нуля
O_EXCL Если вы используете O_CREAT файл существует, он возвращает сообщение об ошибке, он может проверить, существует ли файл
O_NONBLOCK Неблокирующая операций ввода / вывода, так что мы либо успеха или немедленно возвращает ошибку, не блокирован.

Закрыть функция

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

close FILEHANDLE
close

FILEHANDLE для указанного дескриптора файла, если успешно закрыта возвращается верно.

close(DATA) || die "无法关闭文件";

Чтение и запись файлов

Чтение и запись информации в файл Есть несколько различных способов:

оператор <FILEHANDL>

Основной метод чтения информации из открытого дескриптора файла является <FILEHANDLE> оператор. В скалярном контексте он возвращает одну строку из дескриптора файла. Например:

#!/usr/bin/perl

print "本教程网址?\n";
$name = <STDIN>;
print "网址:$name\n";

После реализации описанной выше процедуры следующая информация, мы вводим вывод URL оператор печати:

Когда мы используем <FILEHANDLE> оператор, который возвращает дескриптор файла для каждой строки в списке, например, мы можем импортировать все строки в массив.

Реализация создает import.txt файл, следующим образом:

$ cat import.txt 
1
2
3

Import.txt и читать каждую строку в массив @ строки:

#!/usr/bin/perl

open(DATA,"<import.txt") or die "无法打开数据";
@lines = <DATA>;
print @lines;    # 输出数组内容
close(DATA);

Вышеприведенная программа, выход:

1
2
3

функция ЕОКП

xgetc функция возвращает один символ из указанного FILEHANDLE, если вы не указываете обратный STDIN:

getc FILEHANDLE
getc

В случае возникновения ошибки, или дескриптор файла в конце файла, то она возвращает ФДООН.


функция чтения

Функция чтения используется для обработки информации, считанной из буфера файла.

Эта функция используется для чтения двоичных данных из файла.

read FILEHANDLE, SCALAR, LENGTH, OFFSET
read FILEHANDLE, SCALAR, LENGTH

Параметр Описание:

  • FILEHANDLE: дескрипторов файлов, используемых для хранения уникального идентификатора для файла.
  • СКАЛЯР: Начать чтение позиции.
  • Длина: длина содержимого чтения.
  • OFFSET: смещение.

В случае успешного возвращения, чтобы прочитать количество прочитанных байтов, возвращает 0, если конец файла, если произошла ошибка возврата UNDEF.

функция печати

Для вся информация считывается из функций дескриптор файла на заднем конце основной функции заключается в написании печати:

print FILEHANDLE LIST
print LIST
print

Используйте файл и функции печати может обрабатывать результаты выполнения к выходным устройствам (STDOUT: стандартный вывод), например:

print "Hello World!\n";

копирование файлов

В следующем примере мы открываем существующий файл file1.txt, и читать его каждую строку записывается в файл file2.txt в:

#!/usr/bin/perl

# 只读方式打开文件
open(DATA1, "<file1.txt");

# 打开新文件并写入
open(DATA2, ">file2.txt");

# 拷贝数据
while(<DATA1>)
{
   print DATA2 $_;
}
close( DATA1 );
close( DATA2 );

Переименовать файл

Ниже приведены примеры, мы уже существующий файл file1.txt переименовать file2.txt, каталог, указанный в / USR / w3big / тест / в:

#!/usr/bin/perl

rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );

Функцияпереименовывает принимает только два параметра, только файл уже существует , будет переименован.

Удалить файлы

Следующие примеры показывают , как мы используем функциюUNLINK , чтобы удалить этот файл:

#!/usr/bin/perl

unlink ("/usr/w3big/test/file1.txt");

Укажите расположение файла

Вы можете использовать функциюСКАЖИТЕ , чтобы получить местоположение файла, а также указать местоположение в файле с помощью функции искать:

скажите функцию

Функция скажите используется для получения местоположения файла:

tell FILEHANDLE
tell

Если FILEHANDLE функция возвращает позицию указателя файла в байтах. Если вы не укажете возврат к умолчанию выбирается ручкой файла.

искать функцию

искать () функция используется для перемещения через файл дескриптор файла читать и писать указатели путь для чтения или записи файла в байтах чтения и записи:

seek FILEHANDLE, POSITION, WHENCE

Параметр Описание:

  • FILEHANDLE: дескрипторов файлов, используемых для хранения уникального идентификатора для файла.
  • ПОЛОЖЕНИЕ: указывает количество байтов дескриптора файла (чтение-запись указателя позиции), чтобы переместить.
  • ОТКУДА: представляет собой дескриптор файла (для чтения и записи указателей местоположения) начинают, когда начальное положение, вы можете принимать значение 0, 1; обозначают начало файла, текущей позиции и конец файла.

Ниже приведены примеры, чтобы прочитать 256 байтов от начала файла:

seek DATA, 256, 0;

информация о файле

Perl файловые операции также может проверить, существует ли файл и читать и писать.

Что я могу создать file1.txt файл, например, в следующем:

$ cat file1.txt 
www.w3big.com
#/usr/bin/perl

my $file = "/usr/test/w3big/file1.txt";
my (@description, $size);
if (-e $file)
{
	push @description, '是一个二进制文件' if (-B _);
	push @description, '是一个socket(套接字)' if (-S _);
	push @description, '是一个文本文件' if (-T _);
	push @description, '是一个特殊块文件' if (-b _);
	push @description, '是一个特殊字符文件' if (-c _);
	push @description, '是一个目录' if (-d _);
	push @description, '文件存在' if (-x _);
	push @description, (($size = -s _)) ? "$size 字节" : '空';
	print "$file 信息:", join(', ',@description),"\n";
}

Вышеприведенная программа, выход:

file1.txt 信息:是一个文本文件, 15 字节

Файл операторы тестирования в следующей таблице:

операторы описание
Файл первого обращения времени (единицы: дней)
-B Является ли это двоичный файл
Файл (индексных дескрипторов) инод время модификации (единицы измерения: дней)
Файл последнего изменения времени (единицы измерения: дней)
Все файлы являются реальными UID
-R Файл или каталог может быть прочитан реальным UID / GID
-S Сокет (Socket)
-T Является ли это текстовый файл
-W Файл или каталог может быть записан в режиме реального UID / GID
-X Файлы или каталоги могут быть выполнены в режиме реального UID / GID
-b Файл блок-специальное (специальный блок) (например, монтирования диска)
Символ-специальное (специальные символы) файл (например, устройства ввода / вывода)
-d каталог
Имя файла или каталога существует
-f Обычный файл
-g Файл или каталог имеет атрибут setgid
-k Файл или каталог имеет липкий бит
-l Это является символической ссылкой
Все файлы доступны UID
-p Файл является именованным каналом (FIFO)
-r Файлы могут быть эффективно UID / GID чтения
-s Файл или каталог существует и не 0 (возвращает число байт)
-t Ручка Файл TTY (функция isatty система () возвращает результат, имя файла не может использовать этот тест)
-u Файл или каталог имеет атрибут Setuid
-w Файлы могут быть записаны в действительный UID / GID
-x Файлы могут быть выполнены эффективно UID / GID
-z Файл существует, размер 0 (константа каталога ложно), то есть, пуст ли файл,