[ Pobierz całość w formacie PDF ]
.Innymi sÅ‚owy, sposób traktowania danych jest w Perlu okreÅ›lonyniejawnie, przez kontekst, w którym danych siÄ™ używa nie można tego sposobu okreÅ›lić jawnie, programowo.Tabela A.2.Znaki specjalneZnak specjalny Znaczenie\ Cudzysłów pojedynczy.\ Cudzysłów podwójny.\t Tabulator.\n Znak nowego wiersza.\u Zamiana nastÄ™pnego znaku na wielkÄ… literÄ™.\l Zmiana nastÄ™pnego znaku na maÅ‚Ä… literÄ™.\U Zmiana wszystkich dalszych znaków na wielkie litery.\L Zmiana wszystkich dalszych znaków na maÅ‚e litery.\Q Dodanie lewego ukoÅ›nika do wszystkich dalszych znaków niealfanumerycznych.\E KoÅ„czy dziaÅ‚anie \U, \L lub \Q.\r Znak powrotu kursora.\f Otwarcie strony.\b Backspace.\a SygnaÅ‚ dzwiÄ™kowy.\e Escape.\033 Znak zapisany w postaci kodu ósemkowego.\x1b Znak zapisany w postaci kodu szesnastkowego.\c[ Znak kontrolny.TabliceZmienne tablicowe zaczynajÄ… siÄ™ znakiem @.TablicÄ™ tworzy siÄ™, przypisujÄ…c takiej zmiennej listÄ™: @tablica = (l, 2, 3).Doelementów tablicy można siÄ™ odwoÅ‚ywać jako do skalarów, poprzedzajÄ…c odwoÅ‚ania znakiem $, a żądany indeks podaje siÄ™ w nawiasachkwadratowych.JeÅ›li tablica nazywa siÄ™ @tablica, to wyrażenie $#tablica okreÅ›la indeks ostatniej wartoÅ›ci z tej tablicy.AsocjacjeAsocjacje sÄ… nazywane także tablicami asocjacyjnymi.Ta ostatnia nazwa dość dobrze opisuje ich konstrukcjÄ™: do wskazywaniadanych zamiast indeksów numerycznych używa siÄ™ w nich klucza, który ma postać napisu, a jest zwiÄ…zany z potrzebnÄ… wartoÅ›ciÄ….Nazwy asocjacji poprzedza siÄ™ znakiem %.Jak w przypadku tablic, przy pracy z poszczególnymi elementami asocjacji używa siÄ™ wyróżnik^$.Do wartoÅ›ci można odwoÅ‚ywać siÄ™ przez ich klucz:$wartość = $asocjacja{$klucz}Typy ogólneCzarna KsiÄ™ga - PERL 147Typy ogólne Perla zachowujÄ… siÄ™ jak aliasy.Typów tych można używać do wiÄ…zania nazwy zmiennej (na przykÅ‚ad dane) z innÄ…nazwÄ… (na przykÅ‚ad takzedane).W ten sposób wszystkie zmienne, w których użyto nowej nazwy, czyli $takzedane, @takzedane, %takzedanei tak dalej, odnoszÄ… siÄ™ do tych samych danych, co zmienne zawierajÄ…ce pierwszÄ… nazwÄ™, odpowiednio $dane, @dane, %dane i tak dalej.OperatoryW tabeli A.3 zestawiono operatory Perla w kolejnoÅ›ci malejÄ…cego priorytetu.Przypisywanie wartoÅ›ciOperator przypisania, =, przypisuje zmiennej wartość:$zmiennal = 5Można też użyć skróconego zapisu operatorów przypisania, polegajÄ…cego na poÅ‚Ä…czeniu przypisania z innym operatorem, naprzykÅ‚ad:$dwarazy *= 2Powyższe przypisanie przemnoży wartość $dwarazy przez 2 i wynik zapisze z powrotem w tej samej zmiennej.Oto kompletdozwolonych operatorów przypisania:= **= += &= = ||=.= %= ^= x=Operatory porównaniaOperatory porównania pozwalajÄ… porównać ze sobÄ… dwa argumenty i zwracajÄ… wartość zgodnie z tabelÄ… A.4.Tabela A.3.Operatory PerlaOperatory AÄ…cznośćTermy i lewostronne operatory list lewostronna-> lewostronna++ -- nie dotyczy** prawostronna! ~ \ unarny + unarny - prawostronna=~ !~ lewostronna* / % x lewostronna+ -.lewostronnalewostronnanazwane operatory unarne, operatory testowania plików nie dotyczylt gt le ge nie dotyczy++ != óð eq ne cmp nie dotyczy& lewostronna| ^ lewostronna&& lewostronna|| lewostronna.nie dotyczy?: prawostronna= += -= *= prawostronna, => lewostronnaprawostronne operatory list nie dotyczynot prawostronnaand lewostronnaor xor lewostronnaOperatory równoÅ›ciOperatory równoÅ›ci porównujÄ… dwa argumenty i zwracajÄ… wartość zależnÄ… od wyniku porównania zestawiono je w tabeli A.5.Tabela A.4.Operatory porównaniaOperator Typ danych Zwracaliczbowe PrawdÄ™, jeÅ›li lewy argument jest wiÄ™kszy od prawego.= liczbowe PrawdÄ™, jeÅ›li lewy argument jest wiÄ™kszy lub równy z prawym.lt tekstowe PrawdÄ™, jeÅ›li lewy argument jest mniejszy od prawego.gt tekstowe PrawdÄ™, jeÅ›li lewy argument jest wiÄ™kszy od prawego.le tekstowe PrawdÄ™, jeÅ›li lewy argument jest mniejszy lub równy z prawymge tekstowe PrawdÄ™, jeÅ›li lewy argument jest wiÄ™kszy lub równy z prawym.Tabela A.5.Operatory równoÅ›ciOperator Typ danych Zwraca== liczbowe PrawdÄ™, jeÅ›li lewy argument jest równy prawemu argumentowi.!= liczbowe PrawdÄ™, jeÅ›li lewy argument nie jest równy prawemu argumentowi.liczbowe -1, 0 lub 1 w zależnoÅ›ci od tego, czy lewy argument jest numerycznie odpowiednio mniejszy, równybÄ…dz wiÄ™kszy od prawego argumentu.eq tekstowe PrawdÄ™, jeÅ›li lewy argument jest równy prawemu argumentowi.ne tekstowe PrawdÄ™, jeÅ›li lewy argument nie jest równy prawemu argumentowi.cmp tekstowe -1, 0 lub 1 w zależnoÅ›ci od tego, czy lewy argument jest odpowiednio mniejszy, równy bÄ…dz wiÄ™kszyInstrukcja ifInstrukcja i f sprawdza, czy podany w nawiasach warunek jest speÅ‚niony.JeÅ›li wyrażenie w nawiasach zwraca wartość prawdy(czyli nie 0), wykonywany jest blok kodu instrukcji if.Istnieje też możliwość wykorzystania frazy else zawierajÄ…cej kod wykonywany wprzypadku niespeÅ‚nienia warunku, można w koÅ„cu zastosować frazÄ™ elsif (nie mylić z else if czy elseif), która pozwala zrealizowaćdodatkowe kontrole.Oto skÅ‚adnia instrukcji i f:if (WYRA%7Å‚ENIE) BLOKif (WYRA%7Å‚ENIE) BLOK else BLOKCzarna KsiÄ™ga - PERL 148if (WYRA%7Å‚ENIE) BLOK elsif (WYRA%7Å‚ENIE) BLOK.else BLOKInstrukcja unlessInstrukcja unless dziaÅ‚a wprost przeciwnie niż instrukcja if blok kodu jest wykonywany wtedy, gdy podany warunek niezostanie speÅ‚niony.Oto skÅ‚adnia unless:unless (WYRA%7Å‚ENIE) BLOKunless (WYRA%7Å‚ENIE) BLOK else BLOKunless (WYRA%7Å‚ENIE) BLOK elsif (WYRA%7Å‚ENIE) BLOK.else BLOKInstrukcja forPÄ™tli for używa siÄ™ do wielokrotnego wykonywania instrukcji, zwykle stosuje siÄ™ przy tym indeks pÄ™tli.Oto konstrukcja pÄ™tli for:ETYKIETA for (WYRA%7Å‚ENIE; WYRA%7Å‚ENIE; WYRA%7Å‚ENIE) BLOKPierwsze wyrażenie jest wykonywane przed wykonaniem bloku, drugie natomiast jest sprawdzane przed każdÄ… iteracj Ä… pÄ™tli ijeÅ›li jego wartoÅ›ciÄ… jest faÅ‚sz, pÄ™tla jest koÅ„czona (w zwiÄ…zku z tym blok może nie wykonać siÄ™ ani razu).Trzecie wyrażenie jest wyko-nywane po każdej iteracji.Instrukcja foreachPÄ™tla ta jest wÅ‚aÅ›ciwie tÄ… samÄ… pÄ™tlÄ… co for, ale programiÅ›ci czÄ™sto używajÄ… jej do iteracji po elementach listy.Oto obowiÄ…zujÄ…caskÅ‚adnia:ETYKIETA foreach ZMIENNA (LISTA) BLOKInstrukcja whilePÄ™tla wykonuje blok tak dÅ‚ugo, jak dÅ‚ugo WYRA%7Å‚ENIE jest prawdziwe:ETYKIETA while (WYRA%7Å‚ENIE) BLOKETYKIETA while (WYRA%7Å‚ENIE) BLOK continue BLOKUżycie pÄ™tli untilPÄ™tla wykonuje blok tak dÅ‚ugo, jak dÅ‚ugo wyrażenie ma wartość faÅ‚szu (czyli odwrotnie niż while):ETYKIETA until (WYRA%7Å‚ENIE) BLOKETYKIETA until (WYRA%7Å‚ENIE) BLOK continue BLOKModyfikowanie instrukcji za pomocÄ… fraz if, unless, until i whileW Perlu niekoniecznie trzeba używać formalnych instrukcji warunkowych i instrukcji pÄ™tli, można też zastosować modyfikatoryumieszczane za zwykÅ‚ymi instrukcjami:if WYRA%7Å‚ENIEunless WYRA%7Å‚ENIEwhile WYRA%7Å‚ENIEuntil WYRA%7Å‚ENIEInstrukcje pÄ™tliOto instrukcje dostÄ™pne wewnÄ…trz pÄ™tli:* Polecenie next loop powoduje natychmiastowe rozpoczÄ™cie nastÄ™pnej iteracji pÄ™tli, z pominiÄ™ciem wszelkichinstrukcji znajdujÄ…cych siÄ™ za tym poleceniem;* Polecenie las t koÅ„czy natychmiast wykonywanie bieżącej pÄ™tli;* Polecenie redo powoduje ponowne wykonanie bieżącej iteracji pÄ™tli bez powtórnej ewaluacji warunku pÄ™tli.Instrukcja gotoPerl zawiera instrukcjÄ™ goto, ale jej stosowanie może zaowocować dzikimi skokami, które bardzo trudno bÄ™dzie Å›ledzić, gdyżwykonanie zostaje przeniesione w caÅ‚kiem inne miejsce
[ Pobierz całość w formacie PDF ]