Piątek 11 Kwiecień 2025r. Godz 00:00:00      
Postów: 251      

Perl - Obsługa plików

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 ("dn", "zn", "an");
close SORT;