Perl cwiczenia


IDZ DO
IDZ DO
PRZYKŁADOWY ROZDZIAŁ
PRZYKŁADOWY ROZDZIAŁ
Perl. Ćwiczenia
SPIS TRE CI
SPIS TRE CI
praktyczne
KATALOG KSIĄŻEK
KATALOG KSIĄŻEK
Autor: Krzysztof Juszkiewicz
KATALOG ONLINE
KATALOG ONLINE ISBN: 83-7197-946-0
Format: B5, stron: 132
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
TWÓJ KOSZYK
Je li chcesz rozpocząć przygodę z programowaniem  zacznij naukę od Perla. Po kilku
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
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.
CENNIK I INFORMACJE
CENNIK I INFORMACJE
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
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
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
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
CZYTELNIA
Poznasz:
" Fundamenty języka: zmienne, instrukcje i referencje
FRAGMENTY KSIĄŻEK ONLINE
FRAGMENTY KSIĄŻEK ONLINE
" 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
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.
Sprawdz, czy w zmiennej region znajduje się słowo karp.
Rozwiązanie





Wartość zmiennej ustawiamy na . W tym słowie znajduje sią fraza
, wiąc efekt sprawdzenia bądzie pozytywny i na ekranie powinniśmy zobaczyć napis
wygenerowany przez funkcją .
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 ( ) wystąpuje zadany podciąg ( ).
Ćwiczenie 7.2.
Zbadaj, czy w zmiennej region nie ma słowa karp.
Rozwiązanie










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 nie ma układu liter . Ten sam efekt uzyskamy sto-
sując wykrzyknik przed warunkiem (warunek drugi) oraz dziąki użyciu warunku nega-
tywnego (jeśli nie).
Ćwiczenie 7.3.
Prześledz, czy słowo karp znajduje się w zmiennej domyślnej.
Rozwiązanie





Zmienna domyślna to taka, której nazwa składa sią jedynie z podkreślenia ( ). Jeśli w takiej
zmiennej umieścimy nasz tekst do sprawdzenia ( ), nie trzeba stosować ope-
ratora wyrażenia regularnego ( ), wystarczy jedynie samo wyrażenie w ukośnikach.
Ćwiczenie 7.4.
Przeanalizuj, czy odpowiedz zawarta w zmiennej odp jest twierdząca.
Rozdział 7. Wyrażenia regularne 71
Rozwiązanie




Sprawdzamy tutaj za pomocą wyrażenia regularnego, czy odpowiedz zawiera słowo . Nie
możemy mieć jednak pewności, czy odpowiedzią (wartość zmiennej ) nie była na
przykład lub . Powinniśmy zatem zastosować jeden z poniższych wierszy.







W pierwszym wierszu widzimy porównanie ( ) wartości zmiennej i ciągu znaków ,
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 . Właśnie po to stosujemy znaki daszka i dolara.
Istnieje jednak nadal możliwość, że odpowiedz była twierdząca, a my tego nie stwierdzimy.
Stanie sią tak, gdy zmienna bądzie miała przykładowo wartość lub . Zaradzimy
takiemu zjawisku używając innej konstrukcji.




Różni sią ona od poprzedniej literą , 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 i są równoważne.
Ćwiczenie 7.5.
Sprawdz, czy w zmiennej adres występuje cyfra 2.
Rozwiązanie





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





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ą ( ).





Warunkiem zmiany ograniczającego ukośnika na inny znak jest umieszczenie przed wyraże-
niem litery . Czasem można też spotkać zapis wyrażenia regularnego z ukośnikami i literą
( ). Nie jest on błądny, lecz  jak widać w poprzednich ćwiczeniach  nadmiarowy.
Ćwiczenie 7.7.
Sprawdz, czy numer domu lub mieszkania jest równy .
Rozwiązanie





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





Widzimy tu, że niekoniecznie przed oraz za liczbą dwa musi wystąpić spacja. W tej sytuacji
zamiast spacji należy zastosować ograniczenie słowa ( ). 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





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 .
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śledz, czy w adresie nie występuje liczba nieparzysta.
Rozwiązanie





Analogicznie jak poprzednio, musimy za pomocą ustalić, jaki jest ostatni znak wyrazu
i czy nie jest on nieparzysty.
Ćwiczenie 7.10.
Jeśli w adresie jest liczba parzysta, znajdz ją.
74 Perl. Ćwiczenia
Rozwiązanie





W poprzednim ćwiczeniu używaliśmy wyrażenia . Teraz dodaliśmy , a także
ująliśmy wszystko w nawiasy.
Kombinacja 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 , 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.
Znajdz obie lub jedną liczbę parzystą w adresie.
Rozwiązanie





Wyrażenie regularne ma tu postać podobną jak poprzednio, lecz powtórzone zostały dwu-
krotnie sekwencje . 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 znalezć jedną lub obie liczby parzyste, w zależności od tego, ile
ich wystąpiło.
Pomiądzy liczbami powinny znalezć 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:

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:




Można także zastosować konstrukcją, która wynik umieści wprost w tablicy:



Ćwiczenie 7.12.
Wyświetl kolejno wszystkie liczby parzyste w adresie.
Rozwiązanie





Wartość zmiennej jest dopasowywana do znanego nam już wzorca .
Tym razem jednak po wyrażeniu regularnym pojawiła sią litera , 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





W zmiennej umieszczono cztery liczby w trzech wierszach (trzy znaki nowej
linii). Wyrażenie bądzie pasować jedynie do jednej liczby znajdującej sią na po-
czątku zmiennej, nawet w przypadku zastosowania modyfikatora , użytego w poprzednim
76 Perl. Ćwiczenia
ćwiczeniu. Dzieje sią tak, ponieważ znaki i oznaczają końce wartości całej zmiennej.
Dodanie modyfikatora 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.
Znajdz czwarty znak w zmiennej adres.
Rozwiązanie




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 , a na ekranie zobaczymy literą .
Zastosowanie wyrażenia regularnego do tego typu problemu nie jest najlepszym rozwiąza-
niem. Lepiej użyć funkcji .



Ćwiczenie 7.15.
Znajdz wszystkie cyfry znajdujące się w zmiennej liczba przed cyfrą 0.
Rozwiązanie



W zmiennej cyfra zero wystąpuje dwukrotnie. Stosując wzorzec otrzymujemy
najwiąksze możliwe dopasowanie, czyli zawierające pierwsze zero. Efektem działania funkcji
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ć
.
Rozdział 7. 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.
Sprawdz, czy w zmiennej region jest ciąg liter umieszczony w zmiennej fragment.
Rozwiązanie






W pierwszych dwóch wierszach ustawiamy wartości zmiennych i odpo-
wiednio na oraz . Na początku tego rozdziału zastosowaliśmy warunek
. Teraz zamiast słowa stosujemy wartość zmiennej ,
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 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ć:




Ćwiczenie 7.17.
Do zmiennej fragment wstaw nawias i sprawdz, czy występuje on w zmiennej region.
Rozwiązanie






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:

78 Perl. Ćwiczenia
Użycie odwrotnego ukośnika jest nieeleganckie, gdyż funkcja da na ekranie mylący
efekt.

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ć:






Wspomniane wyłączenie bądzie miało miejsce od znaków do znaków . Można te
sekwencje stosować wielokrotnie.
Zamiana
Ćwiczenie 7.18.
Zamień w zmiennej wladca słowo Kazimierz na Stefan.
Rozwiązanie



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 ,
analogiczny do operatora sprawdzania  .
W przypadku zamiany z wykorzystaniem wyrażenia regularnego należy podać dwa wzorce,
jeden do dopasowania (u nas ), drugi do zamiany ( ). Po zamianie warto-
ścią zmiennej bądzie .
Ćwiczenie 7.19.
Usuń ze zmiennej znaczki wszystkie białe znaki na początku i końcu jej wartości.
Rozwiązanie





Rozdział 7. Wyrażenia regularne 79
W pierwszym wierszu usuwamy białe znaki ( ) wystąpujące na początku ( ) zmiennej
. 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:

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.



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 ( ).



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

Dla systemu uniksowego znak końca linii w jązyku Perl zapisujemy za pomocą wyrażenia
, natomiast dla Windows są to dwa znaki  . 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) są konieczne w przypadku wystąpowania w zmiennej wielu znaków
nowej linii.
Ćwiczenie 7.21.
Zamień numery miesięcy na ich nazwy.
Rozwiązanie



80 Perl. Ćwiczenia



Na początku tworzymy tablicą z nazwami miesiący w odpowiednim przypadku.
Nastąpnie do zmiennej wstawiamy dwa zdania z trzema datami. Trzeci wiersz to
właściwa zamiana.
Szukamy wzorca rozpoczynającego sią minusem ( ), nastąpnie przynajmniej jedna cyfra
( ) 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 ma numer zero, wiąc od zmiennej należy od-
jąć jeden ( ). Nazwa miesiąca pobrana z tablicy ma właśnie taki numer i jest
używana przy zamianie. Efekt podmiany można zobaczyć na ekranie.

Dzielenie
Ćwiczenie 7.22.
Wstaw do tablicy slowa kolejne słowa z wyrażenia zawartego w zmiennej tekst.
Rozwiązanie




Wyrażenia regularne można stosować także do konwersji zmiennej skalarnej na tablicą.
Służy do tego funkcja , 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 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 bądą puste. Stanie sią tak, gdy obok siebie
znajdą sią co najmniej dwa białe znaki.
Przeciwne działanie do funkcji ma funkcja . 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
zobaczymy na ekranie w kolejnych wierszach.





Rozdział 7. Wyrażenia regularne 81
Ćwiczenie 7.23.
Wstaw do tablicy litery kolejne znaki ze zmiennej tekst.
Rozwiązanie




W przypadku, gdy używamy funkcji i podamy jej puste wyrażenie regularne, w wy-
nikowej tablicy ( ) otrzymamy kolejne znaki ze zmiennej . Elementami tablicy
bądą wszystkie znaki, a nie jedynie litery. W naszym przypadku na ekranie zobaczymy je
oddzielone przecinkami, dziąki funkcji .

Transliteracja
Ćwiczenie 7.24.
Zamień wszystkie litery typowe dla języka polskiego na ich obce odpowiedniki.
Rozwiązanie




W Perlu istnieje operator transliteracji (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 , zamienione zostaną
na , na itd. Na ekranie w tym przypadku zobaczymy nastąpujący napis:

Ćwiczenie 7.25.
Zamień wszystkie wielkie litery na małe.
Rozwiązanie




82 Perl. Ćwiczenia
Wykorzystamy tu operator transliteracji , 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.

Ta zamiana nie uwzglądnia liter typowych dla jązyka polskiego. Należy dla nich wykonać
dodatkową operacją transliteracji.





Tym razem nasz tekst bądzie wyglądał tak:

Ćwiczenie 7.26.
Policz, ile razy w zmiennej tekst występuje litera a.
Rozwiązanie




Liczba znaków we wzorcu i specyfikacji zamiany nie musi być równa. Litery w naszym
przypadku nie zostaną zamienione, a na ekranie zobaczymy nastąpującą informacją:

Ćwiczenie 7.27.
Wyrzuć powtarzające się obok siebie znaki ze zmiennej tekst.
Rozwiązanie




Zastosowanie modyfikatora (litera na końcu) dla operatora 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:

Rozdział 7. Wyrażenia regularne 83
Należy zwrócić uwagą, że usuniąte zostały jedynie litery znajdujące sią obok siebie. Litera
wystąpowała dwukrotnie i tak jest nadal. Usuwanie wszystkich powtórzeń spowoduje zapis
przedstawiony poniżej.




We wzorcu nie ma wpisanych żadnych znaków. Jednakże dziąki modyfikatorowi , ozna-
czającemu odwrócenie dopasowania wzorca, operator wykona zadane operacje na każdym
znaku. Nie bądzie to zamiana (wzorzec zamiany jest pusty), lecz usuniącie powtórzeń
(modyfikator ). Tym razem efekt bądzie inny.

Operator może w tym przypadku zostać zastąpiony przez operator zamiany .



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 ( ).


Wyszukiwarka

Podobne podstrony:
ZARZĄDZANIE FINANSAMI cwiczenia zadania rozwiazaneE
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6
menu cwiczenia14
ćwiczenie5 tabele
Instrukcja do cwiczenia 4 Pomiary oscyloskopowe
Filozofia religii cwiczenia dokladne notatki z zajec (2012 2013) [od Agi]
Ćwiczenia z chemii
Cwiczenie nr
Ćwiczenie M16
zestawy domowe ćwiczeń korekcja

więcej podobnych podstron