Najlepszy samouczek operacje na plikach Perl W 2024 r. W tym samouczku możesz dowiedzieć się Otwórz funkcję,funkcja sysopen,funkcja close,Odczytywanie i zapisywanie plików,funkcję odczytu,Określ położenie pliku,informacje o pliku,
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:
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ć. |
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. |
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 "无法关闭文件";
Odczytywać i zapisywać informacje do pliku Istnieje kilka różnych sposobów:
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 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.
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:
W przypadku powodzenia return czytać liczbę bajtów odczytanych, zwraca 0 jeśli koniec pliku, jeśli wystąpi błąd powrócić undef.
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";
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 );
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.
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");
Można użyć funkcjitell uzyskać lokalizację pliku i określ lokalizację w pliku za pomocą funkcji mają na celu:
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.
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:
Poniższe przykłady są do odczytania 256 bajtach od początku pliku:
seek DATA, 256, 0;
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.w3write.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, |