Kurs Perl – cz. 6

Kurs Perla nadal powstaje mimo drobnej przerwy spowodowanej kilkoma wydarzeniami i natłokiem pracy.

1. Wstęp

Wcześniej jedyny sposób pozyskania danych jaki poznaliśmy to wczytywanie ich bezpośrednio z konsoli, do której wprowadzał je użytkownik przy pomocy klawiatury. Czas dać sobie więcej swobody dlatego dzisiaj powiem co nieco o operacjach na plikach. Od teraz będziesz mógł wczytywać potrzebne dane z dysku, lub zapisywać na nim wyniki pracy.

2. Operacje na plikach

Zanim zaczniemy cokolwiek zapisywać lub odczytywać z pliku wspomnę tylko o takim tworze jak uchwyt pliku, jest to identyfikator, który pozwala wskazać Perlowi o jaki plik nam chodzi. Zwykle dla rozróżnienia jego nazwę zapisuje się dużymi literami. Z podobnymi uchwytami miałeś do czynienia przy standardowym wejściu/wyjściu gdzie były odpowiednie STDIN i STDOUT.

2.1 Otwieranie pliku

Do otwarcia pliku służy jakże zaskakująco nazwana funkcja open(), jej pierwszym parametrem jest nazwa uchwytu z jakim powiążemy otwierany plik, drugi parametr to sama ścieżka do pliku:

Od tej pory chcąc skorzystać z otwartego pliku będziemy posługiwali się uchwytem UCHWYT. A co kiedy plik nie istnieje? Wtedy program wyświetli błąd. Warto być przygotowanym na taką ewentualność i skorzystać z zapisu or die:

Wtedy w przypadku błędu podczas otwierania zostanie wyświetlony komunikat „Błąd! Nie udało się otworzyć pliku!”. Dodatkowo możesz wyświetlić zawartość zmiennej $!, która zawierać będzie komunikat błędu.

Kiedy skończysz pracę z plikiem wystarczy zamknąć go funkcją close():

2.1.1 Tryby otwierania

Plik może być otwarty w trybie do odczytu lub do zapisu. Domyślnie otwierany jest jako plik do odczytu. Żeby wybrać tryb otwierania możemy skorzystać z trójargumentowej wersji funkcji open.

Jeśli chcemy otworzyć plik do odczytu podajemy jako tryb znak ‚<‚:

Do otwarcia pliku w trybie zapisu służy znak ‚>’, w przypadku braku pliku zostanie on utworzony. Jeśli zaś chcemy otworzyć plik w trybie dopisywania musimy skorzystać z podwójnego znaku większości: ‚>>’, wtedy nowe dane zostaną dopisane na końcu pliku. Jeśli plik nie istnieje będzie utworzony.

2.2 Czytanie z pliku

W Perlu plik można wczytywać linia po linii lub zapisać całą jego zawartość do tablicy. Ten drugi przypadek nada się raczej tylko do mały plików ponieważ Perl będzie musiał przechować cały plik w pamięci. Aby odczytać linie z pliku trzeba jego uchwyt wstawić pomiędzy operator wczytywania linii: ‚< >’.

Odczytywanie pojedynczych linii możesz zrealizować w pętli while:

Zmienna $_ będzie zawierała aktualnie odczytaną linię, a wyrażenie <PLIK> będzie zwracało true do momentu dojścia do końca pliku.

Jeśli chcemy zapisać wszystkie linie od razu w tablicy skorzystamy z poniższego rozwiązania:

 2.3 Zapisywanie do pliku

Do zapisywania wartości do pliku posłużymy się znaną Ci już funkcją print. W części poświęconej standardowemu wejściu i wyjściu wspomniałem, że można jej podać uchwyt, do którego chcemy żeby wpisywała dane. Teraz skorzystamy z tej możliwości. Chcąc zapisać przykładowe zdanie na dysku wystarczy skorzystać z poniższego zapisu, pamiętając o wybraniu odpowiedniego trybu otwarcia:

 3. Podsumowanie

Po przeczytaniu dzisiejszej części powinieneś już wiedzieć jak zapisywać wyniki działania Twoich programów na dysku lub móc pobierać dane z zewnętrznych plików. Operacje na plikach są w Perlu proste i szybkie w użyciu dlatego nie powinny nikomu sprawić problemów w podstawowym ich używaniu.

Pamiętaj, że jeśli uważasz ten kurs jak i cały blog za wartościowy zostaw komentarz lub Like na Facebooku ;)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *