Operacje plikowe w Perlu

Dotychczas nauczyliśmy się, jak korzystać z funkcji języka Perl. Ta teoria jest jednak nie do zastosowania w praktyce, ponieważ nie nauczyliśmy się jeszcze najważniejszej rzeczy - jak przetwarzać dane.

Bez materiału, w oparciu o który możemy pracować, wszystkie wcześniejsze informacje są praktycznie bezwartościowe. Przygotujmy więc jeszcze większą porcję zapasów i nastawmy się na hibernowanie przed ekranem komputera. Przydałby się nam też samoopalacz - będziemy przynajmniej wyglądać tak, jakbyśmy wychodzili przez ostatnie kilka dni z domu.

Przetwarzanie danych to przede wszystkim dwa wielkie słowa: Wejście i Wyjście. Oznaczają one oczywiście dane wejściowe programu i dane wyjściowe. W obu tych przypadkach dotyczyć mogą one dwóch źródeł czy też celów - użytkownika i pliku.

Dane wejściowe od użytkownika to oczywiście te dane, które użytkownik na żywo podaje podczas wykonywania programu. Dane wyjściowe do użytkownika to oczywiście to, co widzimy na ekranie. W przypadku skryptów CGI żaden z tych mechanizmów nie jest praktycznie wykorzystywany, ponieważ parsery formularzy same zbierają wszystkie konieczne dane.

Dane wejściowe i wyjściowe do/z plików są jednak wykorzystywane praktycznie w każdym programie, ponieważ pozwalają na przetwarzanie tego, co przysyłają nam użytkownicy.

Czytanie pliku

Aby móc czytać dane z pliku musi on być najpierw otwarty i nazwany. Musimy też podać pełną ścieżkę dostępu (lokalizację) do pliku. Poniżej przykład:

  open (PLIK, "/home/katalog/nazwapliku.txt");

Nazwa pliku powinna zazwyczaj nawiązywać do jego zawartości i pozwolić nam na późniejsze jego zidentyfikowanie.

Jeśli chcemy móc operować na danych, musimy przechować je w zmiennej skalarnej ($), lub w tablicy (@). Przechowując je w zmiennej skalarnej umieszczamy wszystko, co program znajdzie w pliku w jednej zmiennej tekstowej (jednej linii). Jeśli jednak określimy plik jako tablicę, Perl dzieli plik na linie i przechowa każdą z nich oddzielnie w innej komórce tablicy. Jeśli więc założymy, że nazwa pliku to PLIK, to możemy plik ten zdefiniować, jako:

  $plik = <PLIK>;

lub

  @plik = <PLIK>;

Jeśli chcemy móc potem zapisywać cokolwiek do tego pliku, lub też jeśli jesteśmy zwolennikami "czystego kodu", plik należy po użyciu zamknąć. Aby zamknąć plik piszemy jedynie:

  close PLIK;

Zapisanie pliku

Kiedy mamy już wszystkie dane w postaci zmiennej skalarnej lub tablicy, możemy zastosować na nich wszystkie mechanizmy, o których mówiliśmy w trakcie kursu. Po ich zastosowaniu na pewno przyda nam się możliwość zachowania wyników obliczeń w przetwarzanym pliku. Możemy to zrobić na dwa sposoby. Jeśli zmieniliśmy wszystkie dane - będziemy chcieli skasować starą wersję pliku i w jego miejsce zachować nowy z nowymi danymi. W przeciwnym wypadku możemy jedynie dopisać coś na końcu istniejącego pliku. Poniżej prezentujemy przykłady obu tych metod.

zapisywanie do pliku:

  open (PLIK, ">/home/katalog/nazwapliku.txt");

dopisywanie na końcu pliku:

  open (PLIK, ">>/home/katalog/nazwapliku.txt");

Teraz, skoro już otworzyliśmy plik do zapisu, warto byłoby dowiedzieć się, jak zapisać nasze dane. Robimy to w następujący sposób:

  print PLIK "oto nowa linia dopisana do pliku plus znacznik nowej linii\n";

Teraz możemy już zacząć pisać własne skrypty, lub też zmieniać istniejące tak, by spełniały nasze potrzeby.