Next Previous Contents

7. Obsługa plików tekstowych.

Każdy plik przed zapisem lub odczytem należy otworzyć, a po zakończeniu operacji na nim - zamknąć. Do otwarcia jakiegokolwiek pliku w języku Perl służy rozbudowana funkcja open, zaś do zamknięcia - close. Nie ma żadnych limitów ilości otwieranych plików w Perlu poza zewnętrznymi, systemowymi. Schemat obsługi pliku jest prosty:

open(DANE, ścieżka_do_pliku);   # otwarcie pliku (DANE to przykładowa nazwa)
[ ... ]                         # operacje na nim
close(DANE);                    # zamknięcie pliku

Plik jednakże może zostać otwarty na kilka sposobów:


open(DANE, ścieżka_do_pliku);           # dwa sposoby otwarcia
open(DANE, "<ścieżka_do_pliku");        # pliku do odczytu

open(DANE, ">ścieżka_do_pliku");        # otwarcie pliku do zapisu
open(DANE, ">>ścieżka_do_pliku");       # otwarcie pliku do dopisywania

Często przydatną rolę w lokalizacji plików na dysku pełnią rozszerzenia sh. Można z nich skorzystać, kiedy ujmiemy ścieżkę do pliku w odpowiednie nawiasy. Na przykład chcąc otworzyć plik znajdujący się w katalogu domowym użytkownika, napiszemy:


open(DANE, <~/plik.txt>);

Najprostszym przypadkiem wyprowadzania danych z pliku będzie wczytanie do tablicy całej zawartości pliku tekstowego:


open(F, '/etc/passwd');   # otwarcie pliku do odczytu
@tekst = <F>;             # zapisanie tekstu z pliku w tablicy (każda linia
                          # zostaje umieszczona z osobna, w jednym polu tablicy)
close(F);                 # zamknięcie pliku

A tak zapisujemy dane do pliku:


open(DANE, '>dane.txt');                        # otwarcie pliku do zapisu
print DANE "Tekst zapisywany do pliku.\n";      # zapisanie tekstu do pliku
close(DANE);                                    # zamknięcie pliku

Za pomocą funkcji open możemy także otwierać i zamykać standardowe wejście (najczęściej klawiatura) i wyjście (najczęściej ekran).


open(DANE, '-');        # otwarcie standardowego wejścia
open(DANE, '>-');       # otwarcie standardowego wyjścia

Funkcja open może także zostać użyta do otwierania strumieni w środowiskach wieloprocesowych. W poniższym przykładzie posortujemy kilka łańcuchów przy użyciu zewnętrznej komendy sort:


open(SORT, "|sort");                 # otwarcie strumienia
print SORT ("d\n", "z\n", "a\n");
close SORT;


Next Previous Contents