Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00742 010432 11035428 na godz. na dobę w sumie
Perl. Ćwiczenia - książka
Perl. Ćwiczenia - książka
Autor: Liczba stron: 132
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-946-0 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> perl - programowanie
Porównaj ceny (książka, ebook, audiobook).
Jeśli chcesz rozpocząć przygodę z programowaniem -- zacznij naukę od Perla. Po kilku godzinach pracy przekonasz się, że dokonałeś najlepszego wyboru. Perl posiada wielką zaletę, której brakuje konkurencyjnym narzędziom: nie znając wszystkich jego niuansów możesz pisać działające aplikacje.

Larry Wall stworzył Perla dla osób, które są niecierpliwe (programy w Perlu pisze się bardzo szybko), leniwe (kod programów jest zwięzły, a ich tworzenie ułatwia ogromna liczba gotowych modułów) i chcą być dumne z tego, co robią (sam przekonasz się, jak wiele satysfakcji dostarczy Ci programowanie w Perlu).

Książka przeznaczona jest dla początkujących programistów. Dowiesz się z niej jak zainstalować Perla, a następnie, krok po kroku, ćwiczenie po ćwiczeniu, zagłębisz się w jego świat.

Poznasz:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Perl. Æwiczenia praktyczne Autor: Krzysztof Juszkiewicz ISBN: 83-7197-946-0 Format: B5, stron: 132 Jeġli chcesz rozpocz¹æ przygodê z programowaniem — zacznij naukê od Perla. Po kilku godzinach pracy przekonasz siê, ¿e dokona³eġ najlepszego wyboru. Perl posiada wielk¹ zaletê, której brakuje konkurencyjnym narzêdziom: nie znaj¹c wszystkich jego niuansów mo¿esz pisaæ dzia³aj¹ce aplikacje. Larry Wall stworzy³ Perla dla osób, które s¹ niecierpliwe (programy w Perlu pisze siê bardzo szybko), leniwe (kod programów jest zwiêz³y, a ich tworzenie u³atwia ogromna liczba gotowych modu³ów) i chc¹ byæ dumne z tego, co robi¹ (sam przekonasz siê, jak wiele satysfakcji dostarczy Ci programowanie w Perlu). Ksi¹¿ka przeznaczona jest dla pocz¹tkuj¹cych programistów. Dowiesz siê z niej jak zainstalowaæ Perla, a nastêpnie, krok po kroku, æwiczenie po æwiczeniu, zag³êbisz siê w jego ġwiat. Poznasz: • Fundamenty jêzyka: zmienne, instrukcje i referencje • Wyra¿enia regularne, umo¿liwiaj¹ce szybkie przeszukiwanie tekstów i podmianê fragmentów • Sposoby korzystania z plików • Zasady pisania skryptów CGI • Wysy³anie e-maili za pomoc¹ Perla • £¹czenie Perla z bazami danych IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści Wstęp...................................................z...................................................z.................... .................................... 5 Rozdział 1. Instalacja ...................................................z...................................................z... ............................................. 7 Archiwum języka Perl — CPAN ...................................................j..............................................8 ActivePerl...................................................j...................................................j.............................11 Uruchamianie skryptów ...................................................j...................................................j.......16 Błędy podczas uruchamiania skryptów ...................................................j............................18 Polskie znaki ...................................................j...................................................j........................22 Rozdział 2. Zmienne...................................................z...................................................z...... ...........................................25 Zmienne skalarne ...................................................j...................................................j.................25 Tablice ...................................................j...................................................j..................................30 Tablice asocjacyjne ...................................................j...................................................j..............36 Rozdział 3. Instrukcje warunkowe i pętle...................................................z....................................................... 41 Rozdział 4. Funkcje ...................................................z...................................................z...... ............................................ 47 Rozdział 5. Referencje ...................................................z...................................................z... ....................................... 53 Referencje skalarne ...................................................j...................................................j..............53 Referencje tablicowe ...................................................j...................................................j............55 Referencje asocjacyjne ...................................................j...................................................j.........57 Zmienne wielowymiarowe ...................................................j...................................................j...58 Rozdział 6. Debugger ...................................................z...................................................z..... ........................................ 63 Wykonywanie krokowe...................................................j...................................................j........64 Czujki ...................................................j...................................................j...................................66 Wartości zmiennych ...................................................j...................................................j.............66 Rozdział 7. Wyrażenia regularne...................................................z........................................................................ 69 Sprawdzanie ...................................................j...................................................j.........................69 Zamiana ...................................................j...................................................j................................78 Dzielenie...................................................j...................................................j...............................80 Transliteracja ...................................................j...................................................j........................81 4 Perl. Ćwiczenia Rozdział 8. Obsługa plików...................................................z.................................................................................... 85 Sprawdzanie i zmiana atrybutów ...................................................j............................................85 Odczyt i zapis ...................................................j...................................................j.......................91 Ograniczanie dostępu ...................................................j...................................................j...........96 Pliki binarne ...................................................j...................................................j.........................98 Rozdział 9. WWW...................................................z...................................................z.......... ........................................... 101 Moduł CGI ...................................................j...................................................j.........................102 Rozdział 10. Poczta elektroniczna ...................................................z....................................................................... 113 Rozdział 11. Inne usługi sieciowe...................................................z....................................................................... 121 Rozdział 12. Bazy danych...................................................z...................................................z. ...................................... 127 Rozdział 7. Wyrażenia regularne Język Perl jest dobrze przystosowany do przetwarzania tekstów. Jego główną zaletą wiążącą się z tym zagadnieniem są wyrażenia regularne. Ich istotą jest tworzenie wzorców opartych o różne symbole. Taki wzorzec jest dopasowywany do testowanego tekstu i w ten sposób można sprawdzać, czy dany tekst zawiera określone litery, znaki, grupy liter, słowa. Opie- rając się na wykonanym dopasowaniu (lub jego braku) można dodatkowo podmienić pa- sującą frazę na inną. Sprawdzanie Ćwiczenie 7.1. Sprawdź, czy w zmiennej region znajduje się słowo kcarp. Rozwiązanie WUTDKPRGTN TGIKQPRQFMCTRCEMK KH TGIKQP`MCTR ] RTKPV,GUVMCTR P _ Wartość zmiennej TGIKQP ustawiamy na RQFMCTRCEMK. W tym słowie znajduje się fraza MCTR, więc efekt sprawdzenia będzie pozytywny i na ekranie powinniśmy zobaczyć napis wygenerowany przez funkcję RTKPV. Do obsługi wyrażeń regularnych używamy operatora składającego się ze znaku równości i tyldy (`). W niektórych edytorach mogą wystąpić problemy z wpisaniem znaku tyldy (`), gdyż po naciśnięciu odpowiedniego klawisza nie pojawia się on na ekranie. Należy wówczas oprócz właściwego klawisza użyć spacji. 70 Perl. Ćwiczenia Po operatorze wyrażenia regularnego piszemy samo wyrażenie ujęte w ukośniki (). Wpisa- nie ciągu liter (tak jak w tym przypadku) spowoduje sprawdzenie, czy w danej zmiennej zawierającej ciąg znaków (RQFMCTRCEMK) występuje zadany podciąg (MCTR). Ćwiczenie 7.2. Zbadaj, czy w zmiennej region nie ma słowa karp. Rozwiązanie WUTDKPRGTN KH TGIKQP`MCTR ] RTKPV$TCMMCTR P _ KH TGIKQP`MCTR ] RTKPV$TCMMCTR P _ WPNGUU TGIKQP`MCTR ] RTKPV$TCMMCTR P _ W tym przypadku przedstawiono trzy alternatywne rozwiązania. Są one równoważne. W pierwszym wierszu widzimy, że zastosowano operator `. Sprawdzamy zatem, czy gdziekolwiek w zmiennej TGIKQP nie ma układu liter MCTR. Ten sam efekt uzyskamy sto- sując wykrzyknik przed warunkiem (warunek drugi) oraz dzięki użyciu warunku nega- tywnego WPNGUU (jeśli nie). Ćwiczenie 7.3. Prześledź, czy słowo karp znajduje się w zmiennej dcomyślnej. Rozwiązanie WUTDKPRGTN ARQFMCTRCEMK KH MCTR ] RTKPV,GUVMCTR P _ Zmienna domyślna to taka, której nazwa składa się jedynie z podkreślenia (A). Jeśli w takiej zmiennej umieścimy nasz tekst do sprawdzenia (RQFMCTRCEMK), nie trzeba stosować ope- ratora wyrażenia regularnego (`), wystarczy jedynie samo wyrażenie w ukośnikach. Ćwiczenie 7.4. Przeanalizuj, czy odpowiedź zawarta w zmiennej odp cjest twierdząca. Rozdział 7. (cid:1) Wyrażenia regularne 71 Rozwiązanie WUTDKPRGTN KH QFR`VCM ] RTKPV,GUV1- P _ Sprawdzamy tutaj za pomocą wyrażenia regularnego, czy odpowiedź zawiera słowo VCM. Nie możemy mieć jednak pewności, czy odpowiedzią (wartość zmiennej QFR) nie była na przykład VCMV[MC lub VCMPKG. Powinniśmy zatem zastosować jeden z poniższych wierszy. WUTDKPRGTN KH QFRGSVCM ] RTKPV,GUV1- P _ KH QFR`@VCM ] RTKPV,GUV1- P _ W pierwszym wierszu widzimy porównanie (GS) wartości zmiennej QFR i ciągu znaków VCM, natomiast w drugim warunku mamy do czynienia z adekwatnym wyrażeniem regularnym. Zastosowanie daszka (@) i dolara () oznacza w tym przypadku odpowiednio początek i koniec ciągu znaków. Innymi słowy, chcemy by słowo tak było dokładnie tym, co znajduje się w zmiennej QFR. Właśnie po to stosujemy znaki daszka i dolara. Istnieje jednak nadal możliwość, że odpowiedź była twierdząca, a my tego nie stwierdzimy. Stanie się tak, gdy zmienna QFR będzie miała przykładowo wartość 6#- lub 6CM. Zaradzimy takiemu zjawisku używając innej konstrukcji. WUTDKPRGTN KH QFR`@VCMK ] RTKPV,GUV1- P _ Różni się ona od poprzedniej literą K, występującą po drugim ukośniku wyrażenia re- gularnego. Dzięki temu przy porównywaniu duże i małe litery traktowane są tak samo, czyli słowa 6#- i VCM są równoważne. Ćwiczenie 7.5. Sprawdź, czy w zmiennej adres występuje cyfra 2. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYCO KH CFTGU` ] RTKPV,GUVFYC P _ Wartości liczbowe w języku Perl traktowane są tak samo jak znaki, dlatego w wyrażeniach regularnych możemy używać również cyfr, w taki sam splosób jak liter. Perl. Ćwiczenia 72 Ćwiczenie 7.6. Ustal, czy w adresie występuje ukośnik. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC KH CFTGU`  ] RTKPV/KGU\MCPKGYDNQMW P _ Wyrażenia regularne umieszczamy w ukośnikach (). Jeśli chcemy umieścić ukośnik w tak zapisanym wyrażeniu regularnym, musimy go poprzedzić odwrotnym ukośnikiem ( ). W ten sposób zapis ( ) staje się dość nieczytelny. Możemy jednak zmienić sposób zapisu wyrażenia, zmieniając znaki ograniczające to wyrażenie () na dowolne inne (z wy- jątkiem liter i cyfr), np. na kreskę pionową (^). WUTDKPRGTN CFTGU$CLMQYC KH CFTGU`O^^ ] RTKPV/KGU\MCPKGYDNQMW P _ Warunkiem zmiany ograniczającego ukośnika na inny znak jest umieszczenie przed wyraże- niem litery O. Czasem można też spotkać zapis wyrażenia regularnego z ukośnikami i literą O (O). Nie jest on błędny, lecz — jak widać w poprzednich ćwliczeniach — nadmiarowy. Ćwiczenie 7.7. Sprawdź, czy numer domu lub mieszkania jest równy . Rozwiązanie WUTDKPRGTN CFTGU$CLMQYCO KH CFTGU` ] RTKPV,GUVFYC P _ Za zadanie mamy sprawdzić, czy w zmiennej zawierającej adres występuje liczba . Spo- dziewamy się, że mogą wystąpić tu dwie liczby, z których przynajmniej jedna jest równa dwa. Nie można jako wyrażenia regularnego w tym przypadku użyć , gdyż moglibyśmy wówczas jako dwa potraktować liczbę, której jedną z cyfr jest dwa (np. ). Zastosujemy zatem sprawdzanie, czy w zmiennej QFR znajduje się fraza składająca się z dwóch spacji, pomiędzy którymi występuje cyfra . Przedstawione rozwiązanie nie jest jednak tym, które spełnia warunki zadania. Poprawny zapis wyrażenia regularnego znajduje się poniżej. Rozdział 7. (cid:1) Wyrażenia regularne 73 WUTDKPRGTN CFTGU$CLMQYC KH CFTGU` D D ] RTKPV,GUVFYC P _ Widzimy tu, że niekoniecznie przed oraz za liczbą dwa musi wystąpić spacja. W tej sytuacji zamiast spacji należy zastosować ograniczenie słowa ( D). Jest to analogiczna konstrukcja, jak w przypadku początku i końca frazy (@). Ćwiczenie 7.8. Zbadaj, czy któryś z numerów w adresie jest parzystyc. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC KH CFTGU`=? D ] RTKPV,GUVRCT\[UVC P _ Liczba parzysta to taka, która kończy się cyfrą parzystą, czyli jedną ze zbioru: 0, 2, 4, 6, 8. Rozwiązanie jest bardzo podobne do poprzedniego, z tą różnicą, że mamy odpowiedzieć na pytanie o ostatnią cyfrę. Dlatego występuje tu tyllko jedno ograniczenie końca wyrazu D. Zamiast sprawdzania, czy wystąpiła tylko jedna cyfra, sprawdzamy, czy nie wystąpił jeden z pięciu wymienionych znaków (w tym przypadku cyfr). Robimy to przy użyciu oznaczenia klasy znaków w języku Perl, używając nawiasów kwadrlatowych =?. Ćwiczenie 7.9. Prześledź, czy w adresie nie występuje liczba niepacrzysta. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC KH CFTGU`=? D ] RTKPV$TCMPKGRCT\[UVGL P _ Analogicznie jak poprzednio, musimy za pomocą D ustalić, jaki jest ostatni znak wyrazu i czy nie jest on nieparzysty. Ćwiczenie 7.10. Jeśli w adresie jest liczba parzysta, znajdź ją. 74 Perl. Ćwiczenia Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC KH CFTGU` F =? D ] RTKPV,GUVRCT\[UVC P _ W poprzednim ćwiczeniu używaliśmy wyrażenia =? D. Teraz dodaliśmy F , a także ujęliśmy wszystko w nawiasy. Kombinacja F oznacza wystąpienie dowolnej cyfry i jest równoznaczna z zapisem =?, który w skrócie wygląda następująco — =?. Gwiazdka ( ) w wyrażeniach regularnych oznacza, że poprzedzające ją wyrażenie nie musi wcale wystąpić lub może się pojawić wielokrotnie (czyli 0 lub więcej razy). W naszym przypadku przed ostatnią cyfrą parzystą może pojawić się w liczbie wiele innych cyfr, co nie będzie miało znaczenia dla parzystości szukanejl liczby. Jeśli w adresie jest liczba parzysta, jej wartość znajldzie się w zmiennej , którą następnie wyświetlamy. Ciąg znaków poprzedzający dopasowanie znajdzie się w B, zaś wystę- pujący po — w zmiennej  . Interpreter zawsze znajduje w takiej sytuacji tylko pierwsze miejsce, w którym spełniony jest zadany warunek. Ćwiczenie 7.11. Znajdź obie lub jedną liczbę parzystą w adresie. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC KH CFTGU` F =? D F =? D ! ] RTKPV,GUVRCT\[UVC P _ Wyrażenie regularne ma tu postać podobną jak poprzednio, lecz powtórzone zostały dwu- krotnie sekwencje F =? D. Obie ujęto w nawiasy, a po drugiej dodano znak zapyta- nia. Dzięki niemu ta druga sekwencja oznaczająca liczbę parzystą może, lecz nie musi, wy- stąpić, co pozwala nam znaleźć jedną lub obie liczby parzyste, w zależności od tego, ile ich wystąpiło. Pomiędzy liczbami powinny znaleźć się jakieś znaki nile będące cyframi (symbol ), o ile w adresie są dwie liczby. Zastosowanie nawiasów w wyrażeniu regularnym spowoduje, że w przypadku, gdy spraw- dzanie ciągu się powiedzie (u nas — gdy w adresie wystąpi co najmniej jedna liczba pa- rzysta), po sprawdzeniu ustawione zostaną zmienne, których nazwy są liczbami. Kolejne zmienne odpowiadają kolejności użytych nawiasów. Efektem działania programu będzie napis: ,GUVRCT\[UVC Rozdział 7. (cid:1) Wyrażenia regularne 75 Wartości zmiennych o nazwach liczbowych są kasowane przed użyciem kolejnego wy- rażenia regularnego, dlatego należy ich wartości zachowywać w innych zmiennych, na przykład za pomocą następującego zapisu: WUTDKPRGTN CFTGU$CLMQYC CFTGU` F =? D F =? D ! RCT\[UVG   Można także zastosować konstrukcję, która wynik umieścli wprost w tablicy: WUTDKPRGTN CFTGU$CLMQYC RCT\[UVGCFTGU` F =? D F =? D ! Ćwiczenie 7.12. Wyświetl kolejno wszystkie liczby parzyste w adresice. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC YJKNG CFTGU` F =? D I ] RTKPV P _ Wartość zmiennej CFTGU jest dopasowywana do znanego nam już wzorca F =?. Tym razem jednak po wyrażeniu regularnym pojawiła slię litera I, oznaczająca konieczność przeszukania całego ciągu, nie zaś — jak poprzednio — tylko pierwszego miejsca, które pasuje do wzorca. Na ekranie zobaczymy następujące llinie wygenerowane przez program:   Ćwiczenie 7.13. Pokaż wszystkie liczby znajdujące się na początku kcolejnych wierszy. Rozwiązanie WUTDKPRGTN YKGTU\G P P P YJKNG YKGTU\G`@ F IO ] RTKPV P _ W zmiennej YKGTU\G umieszczono cztery liczby w trzech wierszach (trzy znaki nowej linii). Wyrażenie @ F będzie pasować jedynie do jednej liczby znajdującej się na po- czątku zmiennej, nawet w przypadku zastosowania modyfikatora I, użytego w poprzednim 76 Perl. Ćwiczenia ćwiczeniu. Dzieje się tak, ponieważ znaki @ i  oznaczają końce wartości całej zmiennej. Dodanie modyfikatora O spowoduje, że wspomniane znaki odnosić się będą do podziału wyznaczonego przez końce linii. Wydruk na ekranie będzie się przedstawiał następująco:    Ćwiczenie 7.14. Znajdź czwarty znak w zmiennej adres. Rozwiązanie WUTDKPRGTN CFTGU$CLMQYC \PCM  CFTGU`]_    RTKPV\PCM W wyrażeniu regularnym widzimy kropkę, która zastępuje dowolny znak. Po niej w na- wiasach klamrowych jest liczba , oznaczająca, że poprzedzający ją znak musi wystąpić dokładnie trzy razy. Następnie znowu jest kropka, w zwykłych nawiasach. Dzięki temu po dopasowaniu do wyrażenia regularnego ustawiona zostanie zmienna  o wartości rów- nej czwartemu znakowi. Ponadto ten znak zostanie zwrócony i podstawiony do zmien- nej \PCM, a na ekranie zobaczymy literę M. Zastosowanie wyrażenia regularnego do tego typu problemu nie jest najlepszym rozwiąza- niem. Lepiej użyć funkcji UWDUVT. WUTDKPRGTN CFTGU$CLMQYC \PCMUWDUVT CFTGU  Ćwiczenie 7.15. Znajdź wszystkie cyfry znajdujące się w zmiennej licczba przed cyfrą 0. Rozwiązanie WUTDKPRGTN NKE\DC RTKPVNKE\DC` F  W zmiennej NKE\DC cyfra zero występuje dwukrotnie. Stosując wzorzec F otrzymujemy największe możliwe dopasowanie, czyli zawierające pierwsze zero. Efektem działania funkcji RTKPV będzie liczba . Gdy chcemy otrzymać najmniejsze dopasowanie, należy po gwiazdce dodać znak zapytania. W naszym przypadku, jeśli chcemy otrzymać liczbę , wzorzec powinien mieć postać  F ! . Rozdział 7. (cid:1) Wyrażenia regularne 77 Ten sam rezultat można uzyskać dzięki wyrażeniu  =? . Oznacza ono zero lub wielokrotne ( ) wystąpienie cyfr od  do . Ćwiczenie 7.16. Sprawdź, czy w zmiennej region jest ciąg liter umiecszczony w zmiennej fragment. Rozwiązanie WUTDKPRGTN TGIKQPRQFMCTRCEMK HTCIOGPVMCTR KH TGIKQP`HTCIOGPV ] RTKPV,GUVEKæIHTCIOGPV P _ W pierwszych dwóch wierszach ustawiamy wartości zmiennych TGIKQP i HTCIOGPV odpo- wiednio na RQFMCTRCEMK oraz MCTR. Na początku tego rozdziału zastosowaliśmy warunek TGIKQP ` MCTR. Teraz zamiast słowa MCTR stosujemy wartość zmiennej HTCIOGPV, która go zawiera. Takie zastosowanie wyrażenia regularnego jest dość wygodne, lecz może wydłużyć czas wykonywania skryptu, gdyż przed każdym dopasowaniem wyrażenia regularnego (na przykład w pętli) interpreter musi sprawdzić, czy wartość zmiennej HTCIOGPV nie uległa zmianie. Wiedząc, że wartość zmiennej nie ulega zmianie, programista może wyłączyć sprawdzanie dodając literę o po wyrażeniu regularnym, tak by ostatni wiersz miał nastę- pującą postać: WUTDKPRGTN KH TGIKQP`HTCIOGPVQ ] RTKPV,GUVEKæIHTCIOGPV P _ Ćwiczenie 7.17. Do zmiennej fragment wstaw nawias i sprawdź, czy wysctępuje on w zmiennej region. Rozwiązanie WUTDKPRGTN TGIKQP RQF MCTRCEMK HTCIOGPV  KH TGIKQP`HTCIOGPVQ ] RTKPV,GUVEKæIHTCIOGPV P _ Nawias w wyrażeniu regularnym ma znaczenie grupujące, dlatego należy go poprzedzić odwrotnym ukośnikiem. Jego pominięcie spowoduje błąld, wyglądający jak poniżej:  WPOCVEJGF KPTGIGZR 78 Perl. Ćwiczenia Użycie odwrotnego ukośnika jest nieeleganckie, gdyż funkcja RTKPV da na ekranie mylący efekt. ,GUVEKæI Innym sposobem jest wyłączenie znaczenia znaków specjalnych w wyrażeniu regularnym. Po modyfikacji rozwiązanie będzie miało następującąl postać: WUTDKPRGTN TGIKQP RQF MCTRCEMK HTCIOGPV  KH TGIKQP` 3HTCIOGPV Q ] RTKPV,GUVEKæIHTCIOGPV P _ Wspomniane wyłączenie będzie miało miejsce od znaków 3 do znaków . Można te sekwencje stosować wielokrotnie. Zamiana Ćwiczenie 7.18. Zamień w zmiennej wladca słowo Kazimierz na Stefan. Rozwiązanie WUTDKPRGTN YNCFEC-C\KOKGT\$CVQT[ YNCFEC`U-C\KOKGT\5VGHCP Za pomocą wyrażeń regularnych możemy nie tylko sprawdzić, czy dane wyrażenie wy- stępuje, lecz również dopasowane wyrażenie zastąpić innym. Służy do tego operator U, analogiczny do operatora sprawdzania — O. W przypadku zamiany z wykorzystaniem wyrażenia regularnego należy podać dwa wzorce, jeden do dopasowania (u nas -C\KOKGT\), drugi do zamiany (5VGHCP). Po zamianie warto- ścią zmiennej YNCFEC będzie 5VGHCP$CVQT[. Ćwiczenie 7.19. Usuń ze zmiennej znaczki wszystkie białe znaki na pocczątku i końcu jej wartości. Rozwiązanie WUTDKPRGTN \PCE\MKVGMUVVGUVQY[ \PCE\MK`U@ U  \PCE\MK`U U  RTKPV\PCE\MK Rozdział 7. (cid:1) Wyrażenia regularne 79 W pierwszym wierszu usuwamy białe znaki ( U) występujące na początku (@) zmiennej \PCE\MK. Plus ( ) oznacza konieczność co najmniej jednokrotnego wystąpienia któregoś z białych znaków. Może to być spacja, tabulacja lub znak nowej linii. Analogicznie w drugim wierszu pozbywamy się znaków przed końcem () wartości zmiennej. Białe znaki w środku tekstu pozostaną niezmienione, a na ekranie zobaczylmy: VGMUVVGUVQY[ Istnieją również dwa różne sposoby realizacji tego zadania, przy zastosowaniu zapisu jednolinijkowego. Są one jednakże wolniejsze w dzialłaniu niż poprzednie rozwiązanie. WUTDKPRGTN \PCE\MKVGMUVVGUVQY[ \PCE\MK`U@ U  ! U  W związku z tym, że należy przyjąć, iż białe znaki mogą wystąpić jedynie z jednej strony, należy zamiast plusa ( ) użyć gwiazdki ( ). W ten sposób dopuszczamy brak wystąpienia białego znaku. W pierwszej wersji korzystamy z zamiany pewnej ograniczonej liczby ( !) dowolnych znaków () na te same znaki, ale bez otaczających białych znaków. Zamiana jest dokony- wana poprzez zastosowanie nawiasów i wykorzystanie wartości zmiennej tymczasowej (). WUTDKPRGTN \PCE\MKVGMUVVGUVQY[ \PCE\MK`U@ U ^ U I Drugi sposób opiera się na zamianie białych znaków na nic. Dodatkowo sprawdzane jest, czy występują one na początku lub (^) na końcu zmiennej. Ćwiczenie 7.20. Zamień znaki końca linii sytemu uniksowego na znaki ckońca linii w systemie Windows. Rozwiązanie \PCE\MK`U P T PIO Dla systemu uniksowego znak końca linii w języku Perl zapisujemy za pomocą wyrażenia P, natomiast dla Windows są to dwa znaki — T P. Należy pamiętać, że w tym przy- padku jeden znak zastępujemy dwoma, z których jeden to ten sam znak. Modyfikatory (litery na końcu) IO są konieczne w przypadku występowania w zmiennej \PCE\MK wielu znaków nowej linii. Ćwiczenie 7.21. Zamień numery miesięcy na ich nazwy. Rozwiązanie WUTDKPRGTN PC\Y[ UV[E\PKCNWVGIQOCTECMYKGVPKCOCLCE\GTYERCNKREC UKGTRPKCYT\GħPKCRCļF\KGTPKMCNKUVQRCFCITWFPKRC  80 Perl. Ćwiczenia VGMUV2T\[U\GFđ4Q\RQE\æđRTCEúKRTCEQYCđFQ P VGMUV`U F PC\Y[=?I RTKPVVGMUV Na początku tworzymy tablicę PC\Y[ z nazwami miesięcy w odpowiednim przypadku. Następnie do zmiennej VGMUV wstawiamy dwa zdania z trzema datami. Trzeci wiersz to właściwa zamiana. Szukamy wzorca rozpoczynającego się minusem (), następnie przynajmniej jedna cyfra ( F ) i potem znowu minus. Celem zamiany jest odstęp (spacja), wartość pewnej zmiennej i znowu spacja. Po dopasowaniu do wzorca pod zmienną  podstawione zostanie wyrażenie pasujące do fragmentu wzorca w nawiasach. Będzie to liczba oznaczająca numer miesiąca. Ponieważ pierwszy miesiąc w tablicy PC\Y[ ma numer zero, więc od zmiennej należy od- jąć jeden (). Nazwa miesiąca pobrana z tablicy PC\Y[ ma właśnie taki numer i jest używana przy zamianie. Efekt podmiany można zobaczyć lna ekranie. 2T\[U\GFđUV[E\PKC4Q\RQE\æđRTCEúOCTECKRTCEQYCđFQRNKUVQRCFC Dzielenie Ćwiczenie 7.22. Wstaw do tablicy slowa kolejne słowa z wyrażenia zawcartego w zmiennej tekst. Rozwiązanie WUTDKPRGTN VGMUV6W\PCLFWLGUKúRKúèUđÎY UNQYCURNKV  U VGMUV  RTKPVLQKP  P UNQYC  Wyrażenia regularne można stosować także do konwersji zmiennej skalarnej na tablicę. Służy do tego funkcja URNKV, której jako pierwszy argument podajemy wyrażenie regu- larne, a jako drugi — zmienną, na której podział ma być dokonany. W tym przypadku poszczególne elementy tablicy UNQYC są oddzielone białymi znakami (zazwyczaj słowa oddzielamy spacjami). Pominięcie plusa, występującego w pierwszym wierszu, może spo- wodować, że niektóre elementy tablicy UNQYC będą puste. Stanie się tak, gdy obok siebie znajdą się co najmniej dwa białe znaki. Przeciwne działanie do funkcji URNKV ma funkcja LQKP. Dzięki tej drugiej możemy tablicę połączyć w zmienną skalarną, wstawiając pomiędzy elementy podany ciąg znaków (nie wyrażenie regularne). U nas będzie to znak nowej linii, czyli kolejne elementy tablicy UNQYC zobaczymy na ekranie w kolejnych wierszach. 6W \PCLFWLG UKú RKúè UđÎY Rozdział 7. (cid:1) Wyrażenia regularne 81 Ćwiczenie 7.23. Wstaw do tablicy litery kolejne znaki ze zmiennej tcekst. Rozwiązanie WUTDKPRGTN VGMUV#$ ECD NKVGT[URNKV VGMUV  RTKPVLQKP NKVGT[ W przypadku, gdy używamy funkcji URNKV i podamy jej puste wyrażenie regularne, w wy- nikowej tablicy (NKVGT[) otrzymamy kolejne znaki ze zmiennej VGMUV. Elementami tablicy będą wszystkie znaki, a nie jedynie litery. W naszym przypadku na ekranie zobaczymy je oddzielone przecinkami, dzięki funkcji LQKP. #$ ECD Transliteracja Ćwiczenie 7.24. Zamień wszystkie litery typowe dla języka polskiegoc na ich obce odpowiedniki. Rozwiązanie WUTDKPRGTN VGMUV ľÎđMPæđħNGFļ VGMUV`VTæèúđēÎħļľäçùĐĒ¦ĦĻĽCEGNPQU\\# .015  RTKPVVGMUV W Perlu istnieje operator transliteracji VT (zapisywany także jako [). Jego działanie polega na zamianie wszystkich znaków ze wzorca na odpowiadające im znaki ze wzorca zamiany. W naszym przypadku wszystkie litery æ zostaną zastąpione literami C, è zamienione zostaną na E, ú na G itd. Na ekranie w tym przypadku zobaczymy następujlący napis: \QNMPCNUNGF\ Ćwiczenie 7.25. Zamień wszystkie wielkie litery na małe. Rozwiązanie WUTDKPRGTN VGMUV0CM.C9+CVW4 GL U6MN#Y+U\5*+(6 VGMUV`[# C\ RTKPVVGMUV 82 Perl. Ćwiczenia Wykorzystamy tu operator transliteracji VT, lecz zapisany krócej (i równoważnie) jako [. Zestaw wszystkich wielkich liter uzyskujemy stosując konstrukcję # i analogicznie otrzy- mamy zestaw małych liter. Efekt można zobaczyć na ekranie. PCMNCYKCVWT\GLGUVMNCYKU\UJKHV Ta zamiana nie uwzględnia liter typowych dla języka polskiego. Należy dla nich wykonać dodatkową operację transliteracji. WUTDKPRGTN VGMUVRK5 äEWĽ[Y#đ-NC9KU\#5*+(6 VGMUV`[# C\ VGMUV`VTäçùĐĒ¦ĦĻĽæèúđēÎħļľ RTKPVVGMUV Tym razem nasz tekst będzie wyglądał tak: RKU\æEWľ[YCđMNCYKU\CUJKHV Ćwiczenie 7.26. Policz, ile razy w zmiennej tekst występuje litera ca. Rozwiązanie WUTDKPRGTN VGMUVCDDCE NKE\DCVGMUV`[C RTKPV9VGMħEKGVGMUVNKVGTCCY[UVæRKđCNKE\DCTC\[ PR Liczba znaków we wzorcu i specyfikacji zamiany nie musi być równa. Litery C w naszym przypadku nie zostaną zamienione, a na ekranie zobalczymy następującą informację: 9VGMħEKGCDDCENKVGTCCY[UVæRKđCTC\[ Ćwiczenie 7.27. Wyrzuć powtarzające się obok siebie znaki ze zmiennecj tekst. Rozwiązanie WUTDKPRGTN VGMUVCDDCE VGMUV`VTC\# U RTKPVVGMUV Zastosowanie modyfikatora U (litera na końcu) dla operatora VT powoduje, że wszystkie takie same znaki znajdujące się obok siebie traktowane są podczas zamiany jako jeden. Dzięki zastosowaniu operacji zapisanej powyżej, zamianie (kasowaniu duplikatów) ulegną tylko litery. Pojawi się następująca wartość zmiennelj: CDCE Rozdział 7. (cid:1) Wyrażenia regularne 83 Należy zwrócić uwagę, że usunięte zostały jedynie litery znajdujące się obok siebie. Litera C występowała dwukrotnie i tak jest nadal. Usuwanie wszystkich powtórzeń spowoduje zapis przedstawiony poniżej. WUTDKPRGTN VGMUVCDDCE VGMUV`VTEU RTKPVVGMUV We wzorcu nie ma wpisanych żadnych znaków. Jednakże dzięki modyfikatorowi E, ozna- czającemu odwrócenie dopasowania wzorca, operator VT wykona zadane operacje na każdym znaku. Nie będzie to zamiana (wzorzec zamiany jest pusty), lecz usunięcie powtórzeń (modyfikator U). Tym razem efekt będzie inny. CDCE Operator VT może w tym przypadku zostać zastąpiony przez operaltor zamiany U. WUTDKPRGTN VGMUVCDDCE VGMUV`U   I Widzimy tu dowolny znak oznaczony kropką ujętą w nawiasy. W ten sposób dla każdego znaku (modyfikator g) ustawiona zostaje zmienna , której wartością jest ten znak. Usta- wionej zmiennej nie można jednak używać w lewej części operatora (we wzorcu). Zamiast niej używa się odpowiadającego jej wyrażenia — . Zatem sekwencja   oznacza dowolny znak, a po nim ten sam znak, występujący co najmniej raz (znak ). Zestaw takich samych znaków zostanie zamieniony na jednokrotne wylstąpienie znaku ().
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Perl. Ćwiczenia
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: