Latest web development tutorials

operacje na plikach Perl

Perl wykorzystuje technikę zwaną zmienną uchwyt pliku obsługiwać typ pliku.

Odczytu lub zapisu danych z pliku wymaga użycia uchwytów plików.

uchwyt pliku (uchwyt pliku) jest nazwą połączeń I / O.

Perl posiada trzy uchwyty plików: stdin, stdout, stderr reprezentujące standardowe wejście, standardowe wyjście i standardowe wyjście błędów.

pliki Perl można otworzyć w jeden z następujących sposobów:

open FILEHANDLE, EXPR
open FILEHANDLE

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

Parametr Opis:

  • UCHWYTPLIKU: uchwyty plików, używany do przechowywania unikalny identyfikator pliku.
  • EXPR: nazwa pliku i typ dostępu do plików składających się z wyrazu.
  • MODE: typ dostępu do plików.
  • Perms: dostęp Bit (bity uprawnień).

Otwórz funkcję

Używamy następującą funkcję kodu do otwarcia trybie tylko do odczytu (<), aby otworzyć plik.txt pliku:

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

<Tylko do odczytu reprezentacji.

Kod uchwyt pliku danych służy do odczytu pliku, następujący przykład otworzy plik i zawartość pliku danych wyjściowych:

#!/usr/bin/perl

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

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

Poniższy kod napisać (>) aż do otwarcia pliku plik.txt:

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

> W trybie zapisu.

Jeśli chcesz otworzyć plik w trybie odczytu i zapisu, z przodu> lub <znak znak +, aby dodać:

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

Takie podejście nie usuwa oryginalną zawartość pliku, jeśli chcesz usunąć następujący format:

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

Jeśli chcesz złożyć dodatkowych danych, dodatkowe dane przed, trzeba tylko otworzyć plik w trybie dopisywania:

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

>> Reprezentuje dodać dane do istniejącego pliku, jeśli chcesz odczytać zawartość pliku do dołączania, aby dodać znak +:

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

W poniższej tabeli wymieniono różne tryby dostępu:

tryb opis
<Lub R Otwórz tylko do odczytu wskaźnik pliku do nagłówka pliku.
> Albo w Otwarty do zapisu wskaźnik pliku do nagłówka pliku i rozmiar pliku zostaje obniżona do zera. Jeśli plik nie istnieje, próbują stworzyć.
>> Albo Otwarty do zapisu wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje, próbują stworzyć.
+ <Lub R + Otwórz do odczytu i zapisu, wskaźnik pliku do nagłówka pliku.
+> Lub w + Otwarcie do odczytu i zapisu, wskaźnik pliku do nagłówka pliku i rozmiar pliku zostaje obniżona do zera. Jeśli plik nie istnieje, próbują stworzyć.
>> + Lub A + Otwarte dla odczytu i zapisu wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje, próbują stworzyć.

funkcja sysopen

Funkcjasysopen jest podobna do funkcji otworzyć, ale nie są one takie same forma argumentu.

Poniższy przykład jest oparty na czytanie i pisanie (+ <filename) drogę do otwarcia pliku:

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

Jeśli chcesz zaktualizować pliki opróżnianie zanim plik jest zapisywany w następujący sposób:

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

Można użyć O_CREAT, aby utworzyć nowy plik, O_WRONLY tylko do zapisu trybu O_RDONLY tryb tylko do odczytu.

Parametry perms ósemkowy wartość nieruchomości wskazuje, że uprawnienia do pliku po jego utworzeniu, domyślnie jest 0x666.

Poniższa tabela zawiera listę możliwych wartości Tryb:

tryb opis
O_RDWR Otwórz do odczytu i zapisu, wskaźnik pliku do nagłówka pliku.
O_RDONLY Otwórz tylko do odczytu wskaźnik pliku do nagłówka pliku.
O_WRONLY Otwarty do zapisu wskaźnik pliku do nagłówka pliku i rozmiar pliku zostaje obniżona do zera. Jeśli plik nie istnieje, próbują stworzyć.
O_CREAT Utwórz plik
O_APPEND Dołącz plik
O_TRUNC Rozmiar pliku zostaje obniżona do zera
O_EXCL Jeśli używasz pliku O_CREAT istnieje, to zwraca komunikat o błędzie, może sprawdzić, czy plik istnieje
O_NONBLOCK Non-blocking I / O operacji tak, że albo się uda albo natychmiast zwraca błąd, nie został zablokowany.

funkcja close

Po użyciu w pliku, należy zamknąć plik, który chcesz odświeżyć buforów wejściowych i wyjściowych uchwytu pliku związanych z zamknięciem plik ma następującą składnię:

close FILEHANDLE
close

UCHWYTPLIKU dla podanego uchwytu pliku, jeśli pomyślnie zamknięte prawdziwe zyski.

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

Odczytywanie i zapisywanie plików

Odczytywać i zapisywać informacje do pliku Istnieje kilka różnych sposobów:

Operator <FILEHANDL>

Główną metodą odczytu informacji z otwartego uchwytu pliku jest operator <UCHWYTPLIKU>. W kontekście skalarnym, zwraca jeden wiersz z uchwytu pliku. Na przykład:

#!/usr/bin/perl

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

Po realizacji powyższej procedury, następujące informacje, wejdziemy wyjście URL instrukcja print:

Gdy używamy <UCHWYTPLIKU> operatora, która zwraca uchwyt pliku dla każdego wiersza na liście, na przykład, możemy zaimportować wszystkie linie do tablicy.

Realizacja tworzy import.txt pliku, w sposób następujący:

$ cat import.txt 
1
2
3

Import.txt i czytać każdą linię do @lines tablicy:

#!/usr/bin/perl

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

Powyższy program, wyjście jest:

1
2
3

funkcja getc

Funkcja xgetc zwraca pojedynczy znak z podanego uchwytu pliku, jeśli nie określi STDIN powrotny:

getc FILEHANDLE
getc

Jeśli wystąpi błąd, lub uchwyt pliku na końcu pliku, zwraca undef.


funkcję odczytu

Funkcja odczytu służy do przetwarzania informacji z bufora odczytu pliku.

Funkcja ta służy do odczytu danych z pliku binarnego.

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

Parametr Opis:

  • UCHWYTPLIKU: uchwyty plików, używany do przechowywania unikalny identyfikator pliku.
  • SKALAR: Start pozycję czytania.
  • Długość: długość treść czytać.
  • Offset: offset.

W przypadku powodzenia return czytać liczbę bajtów odczytanych, zwraca 0 jeśli koniec pliku, jeśli wystąpi błąd powrócić undef.

funkcja drukowania

Dla wszystkich informacji jest odczytywany z funkcji uchwytu pliku na tylnym końcu głównym zadaniem jest napisać drukiem:

print FILEHANDLE LIST
print LIST
print

Użyj plik i funkcje drukowania może obsługiwać wyniki działa na urządzeniach wyjściowych (stdout: wyjście standardowe), na przykład:

print "Hello World!\n";

Kopiowanie plików

Poniższy przykład będziemy otworzyć istniejący plik1.txt pliku i ją przeczytać każdy wiersz napisany na file2.txt plików w:

#!/usr/bin/perl

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

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

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

Zmień nazwę pliku

Poniższe przykłady, będziemy już istniejącego pliku plik1.txt zmienić nazwę file2.txt, katalog określony w katalogu / usr / w3big / test / poniżej:

#!/usr/bin/perl

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

Funkcjazmienia nazwę akceptuje tylko dwa parametry, tylko plik już istnieje, zostanie zmieniona.

Usuń pliki

Poniższe przykłady pokazują, w jaki sposób korzystać z funkcjiodłączyć usunąć ten plik:

#!/usr/bin/perl

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

Określ położenie pliku

Można użyć funkcjitell uzyskać lokalizację pliku i określ lokalizację w pliku za pomocą funkcji mają na celu:

funkcja powiedzieć

Funkcja powiedzieć służy do uzyskania lokalizację pliku:

tell FILEHANDLE
tell

Jeśli UCHWYTPLIKU funkcja zwraca pozycję wskaźnika pliku w bajtach. Jeśli nie zostanie określony powrót do domyślnego wybranego uchwytu pliku.

funkcja poszukiwania

seek () służy do poruszania się po pliku uchwyt pliku do odczytu i zapisu wskaźniki drogę do odczytu lub zapisu pliku w bajtach odczytu i zapisu:

seek FILEHANDLE, POSITION, WHENCE

Parametr Opis:

  • UCHWYTPLIKU: uchwyty plików, używany do przechowywania unikalny identyfikator pliku.
  • STANOWISKO: określa liczbę bajtów uchwytu pliku (read-write wskaźnik położenia), aby przejść.
  • ODTĄD: przedstawia uchwyt pliku (read-write Wskaźniki lokalizacji) rozpocznie się po pozycji wyjściowej, można wziąć wartość 0, 1; oznaczają początek pliku, aktualnej pozycji i na końcu pliku.

Poniższe przykłady są do odczytania 256 bajtach od początku pliku:

seek DATA, 256, 0;

informacje o pliku

Perl operacje na plikach można również sprawdzić, czy plik istnieje i jest czytanie i pisanie.

Co mogę stworzyć plik1.txt pliku, na przykład w obrębie następujących czynności:

$ 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";
}

Powyższy program, wyjście jest:

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

File operatorów testowych w poniższej tabeli:

operatorzy opis
-A Plik jest najpierw obejrzano czasu (dni) jednostki:
-B Czy jest to plik binarny
-C Plik (iwęzłów) węzeł czas modyfikacji (jednostki: dni)
-M Plik był czas ostatniej modyfikacji (jednostki: dzień)
-O Wszystkie pliki są prawdziwe UID
-R Plik lub katalog może być czytany przez rzeczywisty UID / GID
-S Gniazdo (Socket)
-T Czy jest to plik tekstowy
-W Plik lub katalog może być zapisany do rzeczywistego UID / GID
-X Pliki lub katalogi mogą być wykonywane rzeczywistego UID / GID
-b Plik block-special (specjalny blok) (takie jak dysk górze)
-c Postać specjalna (znaki specjalne) pliku (takich jak urządzeń we / wy)
-d katalog
-e Nazwa pliku lub katalogu istnieje
-f Zwyczajne pliku
-g Plik lub katalog ma atrybut setgid
-k Plik lub katalog jest sticky bit
-l Jest to link symboliczny
-o Wszystkie pliki są ważne UID
-p Plik ten jest nazwany potok (FIFO)
-r Pliki mogą być skutecznie UID / GID przeczytać
-s Plik lub katalog istnieje i nie jest równa 0 (zwraca liczbę bajtów)
-t Uchwyt pliku jest TTY (funkcja isatty System () zwraca wynik; nazwa pliku nie można użyć tego testu)
-u Plik lub katalog ma atrybut setuid
-w Pliki mogą być zapisywane na ważne UID / GID
-x Pliki mogą być wykonywane skutecznie UID / GID
-z Plik istnieje, rozmiar 0 (stała katalog jest fałszywy), to znaczy, czy plik jest pusty,