|
| |||||||||||||||||||||||
|
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;
|
[ zajrzyj... ]
[ zajrzyj... ]
| |||||||||||||||||||||