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;