SlideShare a Scribd company logo
1 of 18
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Perl. Æwiczenia
                                         praktyczne
           KATALOG KSI¥¯EK
                                         Autor: Krzysztof Juszkiewicz
                      KATALOG ONLINE     ISBN: 83-7197-946-0
                                         Format: B5, stron: 132
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     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
         CENNIK I INFORMACJE             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ê
                   ZAMÓW INFORMACJE      bardzo szybko), leniwe (kod programów jest zwiêz³y, a ich tworzenie u³atwia ogromna
                     O NOWO CIACH        liczba gotowych modu³ów) i chc¹ byæ dumne z tego, co robi¹ (sam przekonasz siê, jak
                                         wiele satysfakcji dostarczy Ci programowanie w Perlu).
                       ZAMÓW CENNIK      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.
                 CZYTELNIA               Poznasz:
          FRAGMENTY KSI¥¯EK ONLINE          • 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




Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
                       Wstęp.............................................................................................................................................................. 5
Rozdział 1.            Instalacja ...................................................................................................................................................... 7
                       Archiwum języka Perl — CPAN .................................................................................................8
                       ActivePerl...................................................................................................................................11
                       Uruchamianie skryptów .............................................................................................................16
                           Błędy podczas uruchamiania skryptów ...............................................................................18
                       Polskie znaki ..............................................................................................................................22

Rozdział 2. Zmienne.......................................................................................................................................................25
                       Zmienne skalarne .......................................................................................................................25
                       Tablice ........................................................................................................................................30
                       Tablice asocjacyjne ....................................................................................................................36

Rozdział 3. Instrukcje warunkowe i pętle.......................................................................................................... 41
Rozdział 4. Funkcje ........................................................................................................................................................ 47
Rozdział 5. Referencje ................................................................................................................................................ 53
                       Referencje skalarne ....................................................................................................................53
                       Referencje tablicowe ..................................................................................................................55
                       Referencje asocjacyjne ...............................................................................................................57
                       Zmienne wielowymiarowe .........................................................................................................58

Rozdział 6. Debugger ................................................................................................................................................... 63
                       Wykonywanie krokowe..............................................................................................................64
                       Czujki .........................................................................................................................................66
                       Wartości zmiennych ...................................................................................................................66

Rozdział 7.            Wyra enia regularne........................................................................................................................... 69
                       Sprawdzanie ...............................................................................................................................69
                       Zamiana ......................................................................................................................................78
                       Dzielenie.....................................................................................................................................80
                       Transliteracja ..............................................................................................................................81
4                                                                                                                                                    Perl. Ćwiczenia


Rozdział 8. Obsługa plików....................................................................................................................................... 85
                       Sprawdzanie i zmiana atrybutów ...............................................................................................85
                       Odczyt i zapis .............................................................................................................................91
                       Ograniczanie dostępu .................................................................................................................96
                       Pliki binarne ...............................................................................................................................98

Rozdział 9. WWW........................................................................................................................................................... 101
                       Moduł CGI ...............................................................................................................................102

Rozdział 10. Poczta elektroniczna .......................................................................................................................... 113
Rozdział 11. Inne usługi sieciowe.......................................................................................................................... 121
Rozdział 12. Bazy danych............................................................................................................................................. 127
7.                                 Rozdział

                          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 karp.

            Rozwiązanie
                   WUTDKPRGTN
                  TGIKQP  RQFMCTRCEMK 
                 KH 
 TGIKQP ` MCTR ]
                   RTKPV ,GUV MCTRP 
                 _

            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 $TCM MCTRP 
             _

             KH
 TGIKQP ` MCTR ]
               RTKPV $TCM MCTRP 
             _

             WPNGUU
 TGIKQP ` MCTR ]
               RTKPV $TCM MCTRP 
             _

           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 domyślnej.

           Rozwiązanie
               WUTDKPRGTN
              A  RQFMCTRCEMK 
             KH
MCTR ]
               RTKPV ,GUV MCTRP 
             _

           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 jest twierdząca.
Rozdział 7.    Wyra enia regularne                                                                  71



              Rozwiązanie
                 WUTDKPRGTN
               KH
 QFR ` VCM ]
                 RTKPV ,GUV 1-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
 QFR GS VCM  ]
                 RTKPV ,GUV 1-P 
               _
               KH 
 QFR ` @VCM  ]
                 RTKPV ,GUV 1-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 ` @VCM K ]
                 RTKPV ,GUV 1-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  $CLMQYC  O  

               KH
 CFTGU `  ]
                 RTKPV ,GUV FYCP 
               _

              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 sposób jak liter.
72                                                                                     Perl. Ćwiczenia



Ćwiczenie 7.6.

            Ustal, czy w adresie występuje ukośnik.

            Rozwiązanie
                   WUTDKPRGTN
                  CFTGU  $CLMQYC  

                 KH
 CFTGU `  ]
                   RTKPV /KGUMCPKG Y DNQMWP 
                 _

            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 /KGUMCPKG Y DNQMWP 
                 _

            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 ćwiczeniach — nadmiarowy.

Ćwiczenie 7.7.

            Sprawdź, czy numer domu lub mieszkania jest równy .

            Rozwiązanie
                  WUTDKPRGTN
                 CFTGU  $CLMQYC  O  

                 KH
 CFTGU `    ]
                   RTKPV ,GUV FYCP 
                 _

            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.    Wyra enia regularne                                                                        73


                  WUTDKPRGTN
                 CFTGU  $CLMQYC  

               KH
 CFTGU ` DD ]
                 RTKPV ,GUV FYCP 
               _

              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 parzysty.

              Rozwiązanie
                  WUTDKPRGTN
                 CFTGU  $CLMQYC  

               KH
 CFTGU ` =?D ]
                 RTKPV ,GUV RCT[UVCP 
               _

              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 tylko 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 kwadratowych =?.

Ćwiczenie 7.9.

              Prześledź, czy w adresie nie występuje liczba nieparzysta.

              Rozwiązanie
                  WUTDKPRGTN
                 CFTGU  $CLMQYC  

               KH
 CFTGU ` =?D ]
                 RTKPV $TCM PKGRCT[UVGLP 
               _

              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 ,GUV RCT[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 szukanej liczby.

            Jeśli w adresie jest liczba parzysta, jej wartość znajdzie 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 ,GUV RCT[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 nie 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:
              ,GUV RCT[UVC
Rozdział 7.    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

More Related Content

What's hot

Asembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalistyAsembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalisty
Wydawnictwo Helion
 
Linux. Niezbędnik programisty
Linux. Niezbędnik programistyLinux. Niezbędnik programisty
Linux. Niezbędnik programisty
Wydawnictwo Helion
 
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczneNero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
Wydawnictwo Helion
 
Java. Techniki zaawansowane. Wydanie VIII
Java. Techniki zaawansowane. Wydanie VIIIJava. Techniki zaawansowane. Wydanie VIII
Java. Techniki zaawansowane. Wydanie VIII
Wydawnictwo Helion
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczne
Wydawnictwo Helion
 
Programowanie w języku C. Szybki start
Programowanie w języku C. Szybki startProgramowanie w języku C. Szybki start
Programowanie w języku C. Szybki start
Wydawnictwo Helion
 
Python. Rozmówki
Python. RozmówkiPython. Rozmówki
Python. Rozmówki
Wydawnictwo Helion
 
Znajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduZnajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania kodu
Wydawnictwo Helion
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polska
Wydawnictwo Helion
 
Angielski z komputerem. Programy, słowniki komputerowe i strony WWW
Angielski z komputerem. Programy, słowniki komputerowe i strony WWWAngielski z komputerem. Programy, słowniki komputerowe i strony WWW
Angielski z komputerem. Programy, słowniki komputerowe i strony WWW
Wydawnictwo Helion
 
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązańWyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
Wydawnictwo Helion
 

What's hot (20)

Asembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalistyAsembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalisty
 
Efektywne programowanie w języku Java
Efektywne programowanie w języku JavaEfektywne programowanie w języku Java
Efektywne programowanie w języku Java
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
Delphi. Szybki start
Delphi. Szybki startDelphi. Szybki start
Delphi. Szybki start
 
Linux. Niezbędnik programisty
Linux. Niezbędnik programistyLinux. Niezbędnik programisty
Linux. Niezbędnik programisty
 
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczneNero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
Nero 6. Nagrywanie płyt CD i DVD. Ćwiczenia praktyczne
 
Java. Techniki zaawansowane. Wydanie VIII
Java. Techniki zaawansowane. Wydanie VIIIJava. Techniki zaawansowane. Wydanie VIII
Java. Techniki zaawansowane. Wydanie VIII
 
Pajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktycznePajączek 5 NxG. Ćwiczenia praktyczne
Pajączek 5 NxG. Ćwiczenia praktyczne
 
Programowanie w języku C. Szybki start
Programowanie w języku C. Szybki startProgramowanie w języku C. Szybki start
Programowanie w języku C. Szybki start
 
Python. Rozmówki
Python. RozmówkiPython. Rozmówki
Python. Rozmówki
 
C#. Ćwiczenia
C#. ĆwiczeniaC#. Ćwiczenia
C#. Ćwiczenia
 
TCP/IP dla każdego
TCP/IP dla każdegoTCP/IP dla każdego
TCP/IP dla każdego
 
PHP5. Praktyczny kurs
PHP5. Praktyczny kursPHP5. Praktyczny kurs
PHP5. Praktyczny kurs
 
Znajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduZnajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania kodu
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polska
 
Po prostu własny serwer internetowy
Po prostu własny serwer internetowyPo prostu własny serwer internetowy
Po prostu własny serwer internetowy
 
C. Leksykon kieszonkowy
C. Leksykon kieszonkowyC. Leksykon kieszonkowy
C. Leksykon kieszonkowy
 
Angielski z komputerem. Programy, słowniki komputerowe i strony WWW
Angielski z komputerem. Programy, słowniki komputerowe i strony WWWAngielski z komputerem. Programy, słowniki komputerowe i strony WWW
Angielski z komputerem. Programy, słowniki komputerowe i strony WWW
 
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązańWyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań
 
ABC Delphi 7
ABC Delphi 7ABC Delphi 7
ABC Delphi 7
 

Viewers also liked

IrfanView
IrfanViewIrfanView
Po prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie IIIPo prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie III
Wydawnictwo Helion
 
Windows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenieWindows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenie
Wydawnictwo Helion
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
Wydawnictwo Helion
 
Po prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasemPo prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasem
Wydawnictwo Helion
 
Java 2. Techniki zaawansowane
Java 2. Techniki zaawansowaneJava 2. Techniki zaawansowane
Java 2. Techniki zaawansowane
Wydawnictwo Helion
 
Sieci komputerowe. Kompendium
Sieci komputerowe. KompendiumSieci komputerowe. Kompendium
Sieci komputerowe. Kompendium
Wydawnictwo Helion
 
PHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commercePHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commerce
Wydawnictwo Helion
 
J2EE. Wzorce projektowe
J2EE. Wzorce projektoweJ2EE. Wzorce projektowe
J2EE. Wzorce projektowe
Wydawnictwo Helion
 
Java 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie IIJava 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie II
Wydawnictwo Helion
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
Wydawnictwo Helion
 
Sekrety kryptografii
Sekrety kryptografiiSekrety kryptografii
Sekrety kryptografii
Wydawnictwo Helion
 

Viewers also liked (14)

IrfanView
IrfanViewIrfanView
IrfanView
 
SQL. Szybki start
SQL. Szybki startSQL. Szybki start
SQL. Szybki start
 
Po prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie IIIPo prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie III
 
Windows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenieWindows XP. Indywidualne szkolenie
Windows XP. Indywidualne szkolenie
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
 
Po prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasemPo prostu Outlook 2000 PL. Zarządzanie czasem
Po prostu Outlook 2000 PL. Zarządzanie czasem
 
Java 2. Techniki zaawansowane
Java 2. Techniki zaawansowaneJava 2. Techniki zaawansowane
Java 2. Techniki zaawansowane
 
Sieci komputerowe. Kompendium
Sieci komputerowe. KompendiumSieci komputerowe. Kompendium
Sieci komputerowe. Kompendium
 
Po prostu Flash MX
Po prostu Flash MXPo prostu Flash MX
Po prostu Flash MX
 
PHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commercePHP 5 i MySQL. Zastosowania e-commerce
PHP 5 i MySQL. Zastosowania e-commerce
 
J2EE. Wzorce projektowe
J2EE. Wzorce projektoweJ2EE. Wzorce projektowe
J2EE. Wzorce projektowe
 
Java 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie IIJava 2. Techniki zaawansowane. Wydanie II
Java 2. Techniki zaawansowane. Wydanie II
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
 
Sekrety kryptografii
Sekrety kryptografiiSekrety kryptografii
Sekrety kryptografii
 

Similar to Perl. Ćwiczenia

Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanie
Wydawnictwo Helion
 
Algorytmy w Perlu
Algorytmy w PerluAlgorytmy w Perlu
Algorytmy w Perlu
Wydawnictwo Helion
 
Perl
PerlPerl
Java. Kompendium programisty
Java. Kompendium programistyJava. Kompendium programisty
Java. Kompendium programisty
Wydawnictwo Helion
 
Perl. Receptury. Wydanie II
Perl. Receptury. Wydanie IIPerl. Receptury. Wydanie II
Perl. Receptury. Wydanie II
Wydawnictwo Helion
 
Prolog. Programowanie
Prolog. ProgramowanieProlog. Programowanie
Prolog. Programowanie
Wydawnictwo Helion
 
Perl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie IIPerl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie II
Wydawnictwo Helion
 
Perl 6. Podstawy
Perl 6. PodstawyPerl 6. Podstawy
Perl 6. Podstawy
Wydawnictwo Helion
 
Delphi 7 dla każdego
Delphi 7 dla każdegoDelphi 7 dla każdego
Delphi 7 dla każdego
Wydawnictwo Helion
 
PHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędziaPHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędzia
Wydawnictwo Helion
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programisty
Wydawnictwo Helion
 
PHP. Rozmówki
PHP. RozmówkiPHP. Rozmówki
PHP. Rozmówki
Wydawnictwo Helion
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
Wydawnictwo Helion
 
Delphi 2007 dla WIN32 i bazy danych
Delphi 2007 dla WIN32 i bazy danychDelphi 2007 dla WIN32 i bazy danych
Delphi 2007 dla WIN32 i bazy danych
Wydawnictwo Helion
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
Wydawnictwo Helion
 

Similar to Perl. Ćwiczenia (20)

Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanie
 
Algorytmy w Perlu
Algorytmy w PerluAlgorytmy w Perlu
Algorytmy w Perlu
 
Perl
PerlPerl
Perl
 
Java. Kompendium programisty
Java. Kompendium programistyJava. Kompendium programisty
Java. Kompendium programisty
 
Perl. Receptury. Wydanie II
Perl. Receptury. Wydanie IIPerl. Receptury. Wydanie II
Perl. Receptury. Wydanie II
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
PHP. Programowanie
PHP. ProgramowaniePHP. Programowanie
PHP. Programowanie
 
Po prostu Java 2
Po prostu Java 2Po prostu Java 2
Po prostu Java 2
 
Prolog. Programowanie
Prolog. ProgramowanieProlog. Programowanie
Prolog. Programowanie
 
Perl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie IIPerl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie II
 
Perl 6. Podstawy
Perl 6. PodstawyPerl 6. Podstawy
Perl 6. Podstawy
 
Delphi 7 dla każdego
Delphi 7 dla każdegoDelphi 7 dla każdego
Delphi 7 dla każdego
 
PHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędziaPHP5. Obiekty, wzorce, narzędzia
PHP5. Obiekty, wzorce, narzędzia
 
Perl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programistyPerl. Testowanie. Zapiski programisty
Perl. Testowanie. Zapiski programisty
 
mod_perl. Podręcznik programisty
mod_perl. Podręcznik programistymod_perl. Podręcznik programisty
mod_perl. Podręcznik programisty
 
PHP. Rozmówki
PHP. RozmówkiPHP. Rozmówki
PHP. Rozmówki
 
Po prostu Word 2003 PL
Po prostu Word 2003 PLPo prostu Word 2003 PL
Po prostu Word 2003 PL
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
 
Delphi 2007 dla WIN32 i bazy danych
Delphi 2007 dla WIN32 i bazy danychDelphi 2007 dla WIN32 i bazy danych
Delphi 2007 dla WIN32 i bazy danych
 
Flash i PHP5. Podstawy
Flash i PHP5. PodstawyFlash i PHP5. Podstawy
Flash i PHP5. Podstawy
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
Wydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
Wydawnictwo Helion
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
Wydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Wydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Wydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Wydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Wydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
Wydawnictwo Helion
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
Wydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
Wydawnictwo Helion
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
Wydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
Wydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
Wydawnictwo Helion
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
Wydawnictwo Helion
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
Wydawnictwo Helion
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
Wydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Perl. Ćwiczenia

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Perl. Æwiczenia praktyczne KATALOG KSI¥¯EK Autor: Krzysztof Juszkiewicz KATALOG ONLINE ISBN: 83-7197-946-0 Format: B5, stron: 132 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK DODAJ DO KOSZYKA 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 CENNIK I INFORMACJE 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ê ZAMÓW INFORMACJE bardzo szybko), leniwe (kod programów jest zwiêz³y, a ich tworzenie u³atwia ogromna O NOWO CIACH liczba gotowych modu³ów) i chc¹ byæ dumne z tego, co robi¹ (sam przekonasz siê, jak wiele satysfakcji dostarczy Ci programowanie w Perlu). ZAMÓW CENNIK 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. CZYTELNIA Poznasz: FRAGMENTY KSI¥¯EK ONLINE • 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 Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Wstęp.............................................................................................................................................................. 5 Rozdział 1. Instalacja ...................................................................................................................................................... 7 Archiwum języka Perl — CPAN .................................................................................................8 ActivePerl...................................................................................................................................11 Uruchamianie skryptów .............................................................................................................16 Błędy podczas uruchamiania skryptów ...............................................................................18 Polskie znaki ..............................................................................................................................22 Rozdział 2. Zmienne.......................................................................................................................................................25 Zmienne skalarne .......................................................................................................................25 Tablice ........................................................................................................................................30 Tablice asocjacyjne ....................................................................................................................36 Rozdział 3. Instrukcje warunkowe i pętle.......................................................................................................... 41 Rozdział 4. Funkcje ........................................................................................................................................................ 47 Rozdział 5. Referencje ................................................................................................................................................ 53 Referencje skalarne ....................................................................................................................53 Referencje tablicowe ..................................................................................................................55 Referencje asocjacyjne ...............................................................................................................57 Zmienne wielowymiarowe .........................................................................................................58 Rozdział 6. Debugger ................................................................................................................................................... 63 Wykonywanie krokowe..............................................................................................................64 Czujki .........................................................................................................................................66 Wartości zmiennych ...................................................................................................................66 Rozdział 7. Wyra enia regularne........................................................................................................................... 69 Sprawdzanie ...............................................................................................................................69 Zamiana ......................................................................................................................................78 Dzielenie.....................................................................................................................................80 Transliteracja ..............................................................................................................................81
  • 3. 4 Perl. Ćwiczenia Rozdział 8. Obsługa plików....................................................................................................................................... 85 Sprawdzanie i zmiana atrybutów ...............................................................................................85 Odczyt i zapis .............................................................................................................................91 Ograniczanie dostępu .................................................................................................................96 Pliki binarne ...............................................................................................................................98 Rozdział 9. WWW........................................................................................................................................................... 101 Moduł CGI ...............................................................................................................................102 Rozdział 10. Poczta elektroniczna .......................................................................................................................... 113 Rozdział 11. Inne usługi sieciowe.......................................................................................................................... 121 Rozdział 12. Bazy danych............................................................................................................................................. 127
  • 4. 7. Rozdział 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 karp. Rozwiązanie WUTDKPRGTN TGIKQP RQFMCTRCEMK KH TGIKQP ` MCTR ] RTKPV ,GUV MCTRP _ 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.
  • 5. 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 $TCM MCTRP _ KH TGIKQP ` MCTR ] RTKPV $TCM MCTRP _ WPNGUU TGIKQP ` MCTR ] RTKPV $TCM MCTRP _ 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 domyślnej. Rozwiązanie WUTDKPRGTN A RQFMCTRCEMK KH MCTR ] RTKPV ,GUV MCTRP _ 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 jest twierdząca.
  • 6. Rozdział 7. Wyra enia regularne 71 Rozwiązanie WUTDKPRGTN KH QFR ` VCM ] RTKPV ,GUV 1-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 QFR GS VCM ] RTKPV ,GUV 1-P _ KH QFR ` @VCM ] RTKPV ,GUV 1-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 ` @VCM K ] RTKPV ,GUV 1-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 $CLMQYC O KH CFTGU ` ] RTKPV ,GUV FYCP _ 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 sposób jak liter.
  • 7. 72 Perl. Ćwiczenia Ćwiczenie 7.6. Ustal, czy w adresie występuje ukośnik. Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC KH CFTGU ` ] RTKPV /KGUMCPKG Y DNQMWP _ 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 /KGUMCPKG Y DNQMWP _ 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 ćwiczeniach — nadmiarowy. Ćwiczenie 7.7. Sprawdź, czy numer domu lub mieszkania jest równy . Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC O KH CFTGU ` ] RTKPV ,GUV FYCP _ 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.
  • 8. Rozdział 7. Wyra enia regularne 73 WUTDKPRGTN CFTGU $CLMQYC KH CFTGU ` DD ] RTKPV ,GUV FYCP _ 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 parzysty. Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC KH CFTGU ` =?D ] RTKPV ,GUV RCT[UVCP _ 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 tylko 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 kwadratowych =?. Ćwiczenie 7.9. Prześledź, czy w adresie nie występuje liczba nieparzysta. Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC KH CFTGU ` =?D ] RTKPV $TCM PKGRCT[UVGLP _ 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ą.
  • 9. 74 Perl. Ćwiczenia Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC KH CFTGU ` F
  • 10. =?D ] RTKPV ,GUV RCT[UVC P _ W poprzednim ćwiczeniu u ywaliśmy wyra enia =?D. Teraz dodaliśmy F
  • 11. , 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 (
  • 12. ) 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 szukanej liczby. Jeśli w adresie jest liczba parzysta, jej wartość znajdzie 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
  • 13. =?D
  • 14. F
  • 15. =?D! ] RTKPV ,GUV RCT[UVC P _ Wyra enie regularne ma tu postać podobną jak poprzednio, lecz powtórzone zostały dwu- krotnie sekwencje F
  • 16. =?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 nie 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: ,GUV RCT[UVC
  • 17. Rozdział 7. 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
  • 18. =?D
  • 19. F
  • 20. =?D! RCT[UVG Mo na tak e zastosować konstrukcję, która wynik umieści wprost w tablicy: WUTDKPRGTN CFTGU $CLMQYC RCT[UVG CFTGU ` F
  • 21. =?D
  • 22. F
  • 23. =?D! Ćwiczenie 7.12. Wyświetl kolejno wszystkie liczby parzyste w adresie. Rozwiązanie WUTDKPRGTN CFTGU $CLMQYC YJKNG CFTGU ` F
  • 24. =?DI ] RTKPV P _ Wartość zmiennej CFTGU jest dopasowywana do znanego nam ju wzorca F
  • 25. =?. Tym razem jednak po wyra eniu regularnym pojawiła się 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 linie wygenerowane przez program: Ćwiczenie 7.13. Poka wszystkie liczby znajdujące się na początku kolejnych wierszy. Rozwiązanie WUTDKPRGTN YKGTUG P PP YJKNG YKGTUG ` @ F IO ] RTKPV P _ W zmiennej YKGTUG 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
  • 26. 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 PCM UWDUVT CFTGU Ćwiczenie 7.15. Znajdź wszystkie cyfry znajdujące się w zmiennej liczba przed cyfrą 0. Rozwiązanie WUTDKPRGTN NKEDC RTKPV NKEDC ` F
  • 27. W zmiennej NKEDC cyfra zero występuje dwukrotnie. Stosując wzorzec F
  • 28. 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
  • 29. !.
  • 30. Rozdział 7. Wyra enia regularne 77 Ten sam rezultat mo na uzyskać dzięki wyra eniu =?
  • 31. . Oznacza ono zero lub wielokrotne (
  • 32. ) wystąpienie cyfr od do . Ćwiczenie 7.16. Sprawdź, czy w zmiennej region jest ciąg liter umieszczony w zmiennej fragment. Rozwiązanie WUTDKPRGTN TGIKQP RQFMCTRCEMK HTCIOGPV MCTR KH TGIKQP ` HTCIOGPV ] RTKPV ,GUV EKæI HTCIOGPVP _ 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 ,GUV EKæI HTCIOGPVP _ Ćwiczenie 7.17. Do zmiennej fragment wstaw nawias i sprawdź, czy występuje on w zmiennej region. Rozwiązanie WUTDKPRGTN TGIKQP RQFMCTRCEMK HTCIOGPV KH TGIKQP ` HTCIOGPVQ ] RTKPV ,GUV EKæI HTCIOGPVP _ Nawias w wyra eniu regularnym ma znaczenie grupujące, dlatego nale y go poprzedzić odwrotnym ukośnikiem. Jego pominięcie spowoduje błąd, wyglądający jak poni ej: WPOCVEJGF KP TGIGZR
  • 33. 78 Perl. Ćwiczenia U ycie odwrotnego ukośnika jest nieeleganckie, gdy funkcja RTKPV da na ekranie mylący efekt. ,GUV EKæ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ą postać: WUTDKPRGTN TGIKQP RQFMCTRCEMK HTCIOGPV KH TGIKQP ` 3 HTCIOGPV'Q ] RTKPV ,GUV EKæI HTCIOGPVP _ 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 -CKOKGT $CVQT[ YNCFEC ` U-CKOKGT5VGHCP 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 -CKOKGT), 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 początku i końcu jej wartości. Rozwiązanie WUTDKPRGTN PCEMK VGMUV VGUVQY[ PCEMK ` U@U PCEMK ` UU RTKPV PCEMK
  • 34. Rozdział 7. Wyra enia regularne 79 W pierwszym wierszu usuwamy białe znaki (U) występujące na początku (@) zmiennej PCEMK. 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 zobaczymy: VGMUV VGUVQY[ Istnieją równie dwa ró ne sposoby realizacji tego zadania, przy zastosowaniu zapisu jednolinijkowego. Są one jednak e wolniejsze w działaniu ni poprzednie rozwiązanie. WUTDKPRGTN PCEMK VGMUV VGUVQY[ PCEMK ` U@U
  • 35. !U
  • 36. 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 (
  • 37. ). W ten sposób dopuszczamy brak wystąpienia białego znaku. W pierwszej wersji korzystamy z zamiany pewnej ograniczonej liczby (
  • 38. !) 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 PCEMK VGMUV VGUVQY[ PCEMK ` U@U
  • 39. ^U
  • 40. 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 końca linii w systemie Windows. Rozwiązanie PCEMK ` UPTPIO Dla systemu uniksowego znak końca linii w języku Perl zapisujemy za pomocą wyra enia P, natomiast dla Windows są to dwa znaki — TP. 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 PCEMK wielu znaków nowej linii. Ćwiczenie 7.21. Zamień numery miesięcy na ich nazwy. Rozwiązanie WUTDKPRGTN PCY[ UV[EPKC NWVGIQ OCTEC MYKGVPKC OCLC EGTYEC NKREC UKGTRPKC YTG PKC RC FKGTPKMC NKUVQRCFC ITWFPKC
  • 41. 80 Perl. Ćwiczenia VGMUV 2T[UGF 4QRQEæ RTCEú K RTCEQYC FQ P VGMUV ` U F PCY[= ? I RTKPV VGMUV Na początku tworzymy tablicę PCY[ 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 PCY[ ma numer zero, więc od zmiennej nale y od- jąć jeden ( ). Nazwa miesiąca pobrana z tablicy PCY[ ma właśnie taki numer i jest u ywana przy zamianie. Efekt podmiany mo na zobaczyć na ekranie. 2T[UGF UV[EPKC 4QRQEæ RTCEú OCTEC K RTCEQYC FQ NKUVQRCFC Dzielenie Ćwiczenie 7.22. Wstaw do tablicy slowa kolejne słowa z wyra enia zawartego w zmiennej tekst. Rozwiązanie WUTDKPRGTN VGMUV 6W PCLFWLG UKú RKúè U ÎY UNQYC URNKV U VGMUV RTKPV LQKP 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
  • 42. Rozdział 7. Wyra enia regularne 81 Ćwiczenie 7.23. Wstaw do tablicy litery kolejne znaki ze zmiennej tekst. Rozwiązanie WUTDKPRGTN VGMUV #$%ECD NKVGT[ URNKV VGMUV RTKPV LQKP 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 polskiego na ich obce odpowiedniki. Rozwiązanie WUTDKPRGTN VGMUV Î MPæ NGF VGMUV ` VTæèú Î äçù ¦ CEGNPQU#%'.015 RTKPV VGMUV 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ępujący napis: QNMPCN UNGF Ćwiczenie 7.25. Zamień wszystkie wielkie litery na małe. Rozwiązanie WUTDKPRGTN VGMUV 0C M.C9+CVW4G L'U6 MN#Y+U 5*+(6 VGMUV ` [#C RTKPV VGMUV
  • 43. 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. PC MNCYKCVWTG LGUV MNCYKU UJKHV Ta zamiana nie uwzględnia liter typowych dla języka polskiego. Nale y dla nich wykonać dodatkową operację transliteracji. WUTDKPRGTN VGMUV RK5äE W [Y# -NC9KU# 5*+(6 VGMUV ` [#C VGMUV ` VTäçù ¦ æèú Î RTKPV VGMUV Tym razem nasz tekst będzie wyglądał tak: RKUæE W [YC MNCYKUC UJKHV Ćwiczenie 7.26. Policz, ile razy w zmiennej tekst występuje litera a. Rozwiązanie WUTDKPRGTN VGMUV CDDCE NKEDC VGMUV ` [C RTKPV 9 VGM EKG VGMUV NKVGTC C Y[UVæRK C NKEDC TC[P Liczba znaków we wzorcu i specyfikacji zamiany nie musi być równa. Litery C w naszym przypadku nie zostaną zamienione, a na ekranie zobaczymy następującą informację: 9 VGM EKG CDDCE NKVGTC C Y[UVæRK C TC[ Ćwiczenie 7.27. Wyrzuć powtarzające się obok siebie znaki ze zmiennej tekst. Rozwiązanie WUTDKPRGTN VGMUV CDDCE VGMUV ` VTC#U RTKPV VGMUV 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ść zmiennej: CDCE
  • 44. Rozdział 7. 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 VGMUV CDDCE VGMUV ` VTEU RTKPV VGMUV 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 operator zamiany U. WUTDKPRGTN VGMUV CDDCE 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 wystąpienie znaku ( ).