7480

Szczegóły
Tytuł 7480
Rozszerzenie: PDF
Jesteś autorem/wydawcą tego dokumentu/książki i zauważyłeś że ktoś wgrał ją bez Twojej zgody? Nie życzysz sobie, aby podgląd był dostępny w naszym serwisie? Napisz na adres [email protected] a my odpowiemy na skargę i usuniemy zabroniony dokument w ciągu 24 godzin.

7480 PDF - Pobierz:

Pobierz PDF

 

Zobacz podgląd pliku o nazwie 7480 PDF poniżej lub pobierz go na swoje urządzenie za darmo bez rejestracji. Możesz również pozostać na naszej stronie i czytać dokument online bez limitów.

7480 - podejrzyj 20 pierwszych stron:

Steven Holzner Czarna Ksi�ga - Perl Wprowadzenie Niniejsza ksi��ka ma da� Ci wszystko, czego potrzebujesz, aby sta� si� programist� w Perlu, a to przecie� znaczy bardzo wiele. Perl nie jest zwyk�ym j�zykiem programowania. Osoby go u�ywaj�ce oddaj� si� pracy z pasj�, s� zdolni do wzruszenia i zadziwienia, ale tak�e do rozpaczy i frustracji. Perl to wi�cej ni� j�zyk programowania � to praprzyczyna, zaj�cie dla poet�w i fanatyk�w komputera. Perl mo�e by� z�o�ony i trudny do opanowania, ale dla prawdziwego entuzjasty nie ma innej drogi. Zreszt� po przeczytaniu tej ksi��ki zrozumiesz, o co mi chodzi. W ci�gu dwunastu lat tryumfalnego pochodu przez informatyczne salony praktyczny j�zyk pobierania danych i raportowania (przez niekt�rych cz�sto nazywany �chorobliwie zaba�aganionym generatorem �mieci") sta� si� przyczyn� wielu emocji. Wiele os�b po�wi�ca zadziwiaj�co du�o czasu na jego u�ywanie, udoskonalanie i rozbudow�. Autor swoj� prac� z Perlem zacz�� wiele lat wcze�niej, zanim wpad� mu do g�owy pomys� napisania tej ksi��ki. By� mo�e spos�b my�lenia � zaprezentowany w tej ksi��ce � spodoba si� niekt�rym Czytelnikom, powi�kszaj�c grono prawdziwych entuzjast�w Perla? Zawarto�� tej ksi��ki W tej ksi��ce nie tylko podano kompletny opis sk�adni j�zyka Perl, ale opisano tak�e sam j�zyk oraz zakres jego u�ywania. Na przyk�ad Perla mo�na znale�� niemal�e w ka�dym miejscu w Internecie, zatem w ksi��ce podano wiele praktycznych przyk�ad�w CGI. Innym popularnym zestawieniem jest po��czenie Perla i Tcl/Tk, co umo�liwia mi�dzy innymi wy�wietlanie okien, przycisk�w czy menu � r�wnie� ten temat jest opisany w ksi��ce. Istnieje jeszcze kilka innych zagadnie�, om�wionych tutaj, a zwi�zanych z Perlem, takich jak ��czenie tego j�zyka z bazami danych, serwerami OLE Windows, innymi procesami i tak dalej. Jak wida�, proponowana ksi��ka ma da� obraz tego, jak j�zyk Perl jest u�ywany dzisiaj. W Perlu 5 istnieje wiele rozszerze�, kt�re zostan� w tej ksi��ce przedstawione. Czytelnik znajdzie w niej m.in. nast�puj�ce zagadnienia: pisanie czytelnego kodu Perl, u�ycie blok�w BEGIN i END w pakietach, zgodno�� z POSIX, programowanie obiektowe, dowolne zagnie�d�anie struktur danych, zakresy leksykalne, u�ycie modu��w i tak dalej. J�zyk Perl 5 stanowi ca�kiem now� jako�� i na tej w�a�nie wersji niniejsza ksi��ka jest oparta. Ksi��k� t� podzielono na osobne, wygodne w u�yciu tematy, a jest ich blisko pi��set. Ka�dy temat zawiera om�wienie jednego zagadnienia programistycznego. Poni�ej znajduje si� lista wybranych temat�w: * sk�adnia Perla 5: instrukcje i deklaracje, * interaktywne uruchamianie skrypt�w Perla, * wprowadzanie i wyprowadzanie tekstu, * tworzenie zmiennych skalarnych, * kontekst skalarny i listowy, * tworzenie tablic i asocjacji, * typy globalne i tabele symboli, * operatory Perla, * wzorce tekstowe i obs�uga tekst�w, * tworzenie procedur, * zmienne o ograniczonym zakresie, * zmienne tymczasowe, * zmienne statyczne, * procedury rekurencyjne, * anonimowe tablice, asocjacje i procedury, * wska�niki Perla, * wska�niki symboliczne, * szablony funkcji, * zmienne specjalne Perla, * funkcje wbudowane Perla, * funkcje POSIX, * formaty Perla, * komunikacja mi�dzyprocesowa, * OLE Win32, * obs�uga plik�w, * pliki baz danych DBM, * blokowanie plik�w, * operatory do obs�ugi katalog�w, * testy wydajno�ci, * operacje zale�ne od ustawie� narodowych, * wydzielanie kodu do zabezpieczonych cz�ci, * Perl/Tk: u�ycie pakietu Tk, * rekordy z�o�one, * tablice tablic, tablice asocjacyjne tablic asocjacyjnych, tablice tablic asocja cyjnych i tablice asocjacyjne tablic, * listy powi�zane i bufory pier�cieniowe, * pakiety Perla, * konstruktor/ i destruktory pakiet�w, * rozbijanie pakiet�w mi�dzy pliki, * modu�y Perla, * eksportowanie symboli z modu��w, * automatyczne �adowanie procedur modu�u, * klasy Perla, * metody klas, * zmienne instancji i klas, * dziedziczenie klas, * dziedziczenie wielokrotne, * wi�zanie skalar�w, tablic i asocjacji, * przechwytywanie b��d�w wykonania, * debugger Perla, * PerlScript, * programowanie CGI, * tworzenie i u�ywanie w CGI kontrolek HTML, * CGI a bezpiecze�stwo, * oznaczanie danych jako ska�onych, * przyznawanie skryptom CGI dodatkowych uprawnie�, * tworzenie licznik�w odwiedzin, * tworzenie ksi��ki go�ci, * wysy�anie list�w elektronicznych ze skrypt�w CGI, * tworzenie chat, * zagadnienia bezpiecze�stwa w przypadku wielu u�ytkownik�w, * odpieranie atak�w DOS, * od�wie�anie element�w graficznych HTML, * tworzenie cookies, * przechowywanie w stronach danych pomi�dzy kolejnymi wywo�aniami skryptu. W tej ksi��ce u�ywamy kilka konwencji, o kt�rych nale�y pami�ta�. Kiedy konieczne jest wskazanie jakiego� wiersza kodu, b�dzie on zaznaczony pogrubieniem: $text = "Hello!\n" print $text; Kiedy natomiast nale�y pokaza� wyniki dzia�ania skryptu � niezale�nie od samego skryptu, wyniki te b�d� zapisywane kursyw�: Stext = "Hello!\n" print Stext; Hello Co b�dzie nam potrzebne? Autor opiera si� w ksi��ce na j�zyku Perl w wersji 5.005. Perl jest darmowy, wystarczy go za�adowa� i zainstalowa� � zagadnienie to zostanie om�wione w rozdziale pierwszym. W przypadku korzystania z systemu wielou�ytkownikowego Perl mo�e ju� by� zainstalowany; aby to sprawdzi�, wystarczy w wierszu polece� wy�wietli� numer wersji Per�a: perl -v Warto wzi�� pod uwag� jeszcze dwie sprawy, je�li chodzi o samodzielne uruchamianie Perla: zaleca si� u�ycie prze��cznika -w, kt�ry powoduje wy�wietlanie ostrze�e� (by� mo�e kiedy� wy�wietlanie ostrze�e� stanie si� w Perlu standardem), oraz u�ycie dyrektywy kompilatora use strict, kt�ra powoduje, �e konieczne jest deklarowanie wszystkich zmiennych i innych symboli. Zadbanie o te dwie rzeczy zaoszcz�dzi wielu k�opot�w przy uruchamianiu program�w. Trzeba b�dzie jeszcze w jaki� spos�b tworzy� same skrypty Perla. Wspomniane skrypty to zwyk�e pliki tekstowe, zawieraj�ce instrukcje i deklaracje Perla. Aby utworzy� skrypt Perla, potrzebny jest edytor tekstowy, kt�ry potrafi pliki zapisywa� jako zwyk�y tekst. Wi�cej informacji na ten temat znajdziesz w rozdziale L, w punkcie �Zapisywanie skrypt�w Perla". Istnieje jeszcze jedna dziedzina wiedzy, kt�ra jest nam zb�dna � system operacyjny, w kt�rym Perl dzia�a. Wprawdzie w wielu ksi��kach o Perlu niejako z g�ry zak�ada si�, �e jeste� do�wiadczonym programist� Uniksa, ale tyrh razem b�dzie inaczej. Per! ju� nie jest �ci�le zwi�zany z Uniksem i czas, aby zerwa� z dawn� tradycj� ksi��ek o tym j�zyku. Inne zasoby Istnieje mn�stwo informacji o Perlu, kt�re mog� pom�c w nauce, zreszt� wraz z P�dem jest dostarczana bogata dokumentacja. W systemach takich jak Windows dokumentacja ta ma posta� zestawu powi�zanych ze sob� stron HTML. W systemach wielou�ytkonikowych dokumentacja zwykle jest dost�pna- dzi�ki poleceniom systemu operacyjnego, obs�uguj�cym pomoc �jak np. ma� w Uniksie. Funkcjonuje te� mn�stwo grup dyskusyjnych dla programist�w Perla: * comp.lang.perl.announce � grupa, na kt�rej stale co� si� dzieje, * com.lang.perl.mixc � dynamiczna grupa, kt�ra mi�dzy innymi rozsy�a FAQ Perla (Cz�sto zadawane pytania), * com.lang.perl.modules � wszystko o tworzeniu modu��w i wielokrotnym u�yciu kodu, zar�wno w�asnego, jak i cudzego, * comp.lang.perl.tk � informacje o ��czeniu Perla z pakietem Tk j�zyka Tcl. Pakiet Tk obs�uguje szereg element�w graficznych, jak cho�by przyciski czy menu, dzi�ki czemu elementy te mo�na automatycznie u�ywa� tak�e w Perlu. Obecnie pakiet Tk sta� si� bardzo popularny. Je�li kogo� interesuje programowanie CGI, warto skorzysta� z adresu grupy: * comp.infosystemx.www.authoring.cgi � w nazwie nie ma tu Perla, ale jest to dobre miejsce do rozmowy na temat zastosowania Perla w CGI. Istnieje tak�e wiele stron o Perlu (zapytanie o Perla zwr�ci�o l 527 903 stron): * strona g��wna Perla to www.perl.com, gdzie znajdziesz kod �r�d�owy i wersje Perla na r�ne systemy operacyjne, dokumentacj�, modu�y, informacje o b��dach i list� cz�sto zadawanych pyta� (FAQ, dost�pne pod adresem www:perl.com/perl/faq); * w witrynie CPAN (Comprehensive Perl Archive Network), dost�pnej pod adresem www.cpan.org lub www.perl.com/CPAN-local/CPAN.html, znajdziesz samego Perla, jego modu�y, rozszerzenia oraz mn�stwo innych rzeczy zwi�zanych z tym j�zykiem. Jest to ogromne �r�d�o wiedzy i zasob�w dla wszystkich, kt�rzy u�ywaj� Perla. Przegl�daj�c zawarto�� CPAN, znajdziesz mn�stwo przydatnego kodu � od rozszerze� Perla umo�liwiaj�cych obs�ug� obrazk�w po modu�y internetowe do obs�ugi interfejs�w do baz danych; * Instytut Perla spod adresu www.perl.com jest niedochodow� organizacj�, kt�ra � zgodnie ze przyj�tymi przez siebie za�o�eniami � �troszczy si� o to, aby Perl by� dost�pny, przydatny i darmowy dla wszystkich zainteresowanych". Instytut ten jest ostoj� per�owej spo�eczno�ci i zapewnia fanom tego j�zyka sta�e kontakty; * strona j�zyka Perl znajduje si� pod adresem www.perl.com/perl/, a znajdziesz tam om�wienie Perla, nowinki, list� dost�pnych zasob�w oraz oprogramowanie. Tam te� s� dost�pne listy wysy�kowe na temat Per�a; * istnieje wiele innych stron, kt�re koncentruj� si� na pewnych aspektach pracy z Perlem � na bezpiecze�stwie, programowaniu CGI i innych. Warto po prostu poszuka� w Sieci, aby znale�� jeszcze wi�cej ciekawych informacji. Mo�na si�gn�� r�wnie� po kwartalnik po�wi�cony Per�owi. Wi�cej informacji na jego temat znajdziesz pod adresem orwcmt.www.media.mit.edu/thej3erljournal. I to tyle informacji tytu�em wst�pu, teraz czas zaj�� powa�niej si� Perlem. Cz�� I Sk�adnia j�zyka Perl Rozdzia� 1. Co o Perlu trzeba wiedzie�? W skr�cie Zaczynamy od pocz�tku W tym rozdziale zaczniemy nauk� Perla. Najpierw om�wimy rzeczy najwa�niejsze � tworzenie i uruchamianie skrypt�w. Wiadomo�ci z tego rozdzia�u to absolutne podstawy, kt�rych znajomo�� jest niezb�dna w dalszej cz�ci ksi��ki. Om�wimy tutaj te� wy�wietlanie tekstu i odczytywanie informacji podawanych przez u�ytkownika. Zapewne tre�ci tutaj przedstawione dla wi�kszo�ci czytelnik�w nie b�d� niczym nowym, dlatego rozdzia� ten warto potraktowa� jako kr�tkie przypomnienie. Jednak niekt�re informacje b�d� nowo�ci�� mo�na przypuszcza� na przyk�ad, �e bardzo niewiele os�b zna wszystkie prze��czniki wiersza polece� Perla. Perl powsta� w 1986 roku jako narz�dzie do �ledzenia przebiegu konfigurowania systemu w sieci, dzi� za� sta� si� przeno�nym j�zykiem u�ywanym przez ogromn� cz�� u�ytkownik�w Sieci, dlatego Perla mo�na spotka� niemal�e wsz�dzie w Internecie. Je�li znasz j�zyk angielski, m�g�by� zapyta�, czemu �Perl", a nie �Pearl" (per�a)! Okazuje si�, �e w czasie, kiedy Perl powstawa�, istnia� ju� j�zyk graficzny Pearl. Z drugiej strony jednak, je�li z pe�nej nazwy � Practical Extraction and Reporting Language � utworzy� akronim z u�yciem wszystkich s��w, to faktycznie otrzyma si� nazw� Pearl. Perl jest j�zykiem interpretowanym, kt�ry stworzono w celu analizowania plik�w tekstowych, pobierania z nich informacji i wy�wietlania raport�w tekstowych zawieraj�cych te informacje. Do uruchamiania skrypt�w Perla u�ywa si� interpretera Perla o nazwie perl (zwr�� uwag� na r�nic� w wielko�ci liter). Warto tu napomkn��, �e istniej � te� kompilatory Perla. Niekt�rzy dziwi� si� popularno�ci Perla, j�zyka � b�d� co b�d� � zwi�zanego ze �rodowiskiem tekstowym, a do tego uruchamianym z wiersza polece�, podczas gdy standardem staj� si� interfejsy graficzne, takie jak Windows. W�r�d przyczyn sukcesu Perla i stale zwi�kszaj�cej si� jego popularno�ci mo�na wymieni� nast�puj�ce kwestie: * Wiele system�w operacyjnych nadal bazuje g��wnie na trybie tekstowym. * Perl jest j�zykiem programowania dzia�aj�cym na r�nych platformach sprz�towych i w r�nych systemach operacyjnych, za� r�nice mi�dzy poszczeg�lnymi systemami s� niewielkie i dotycz� tylko takich szczeg��w, jak na przyk�ad liczba bajt�w u�ywanych do przechowywania d�ugiej liczby ca�kowitej; * Dzi�ki wykorzystaniu pakietu Tk.pm Perl sta� si� narz�dziem graficznym (zajmiemy si� tym dok�adniej w rozdziale 13.), gdy� mo�na w nim u�ywa� typowych element�w graficznych za po�rednictwem pakietu Tk j�zyka Tcl. U�ycie modu�u Tk.pm umo�liwia wy�wietlanie okienek zawieraj�cych przyciski, menu i inne elementy bezpo�rednio z Perla. * Tym, co przyci�gn�o do Perla najwi�ksz� liczb� ludzi, jest programowanie CGI, kt�re umo�liwia realizacj� w Sieci strategii klient-serwer. Przy tworzeniu stron sieciowych nie jest problemem u�ywanie trybu tekstowego, gdy� same strony s� zapisane zwyk�ym tekstem. Programowanie CGI w Perlu to naprawd� bardzo wa�ny mechanizm, wobec tego b�dzie to jeden z g��wnych temat�w niniejszej ksi��ki. Tyle wiadomo�ci wst�pnych powinno nam wystarczy� � teraz czas ju� zacz�� prac� ze skryptami. Zagadnienia: Uzyskanie i instalacja Perla Perl jest darmowy, wi�c wystarczy go �ci�gn�� z Sieci i zainstalowa�. W przypadku korzystania z systemu wielodost�pnego nale�y sprawdzi�, czy Perl nie zosta� ju� zainstalowany � w tym celu trzeba u�y� polecenia: %perl -v W ca�ej tej ksi��ce symbol % oznacza znak zach�ty systemu Unix. Znaku tego nie nale�y wpisywa�. Je�li Perl by� zainstalowany i okre�lono do niego �cie�k�, powy�sze polecenie wy�wietli jego wersj� oraz wersje zainstalowanych poprawek (poprawki s� wy dawane co jaki� czas � zawieraj� poprawki b��d�w). Zwr�� uwag�, �e w niekt�rych systemach zainstalowane mog� by� stare wersje Perla, na przyk�ad wersja 4. W takiej sytuacji wersja 5 Perla mo�e by� dost�pna pod poleceniem perl5 (wypr�buj to polecenie, je�li polecenie perl -v wskaza�o, �e istnieje starsza wersja Perla): %perl5 -v Je�li nie masz Perla, znajdziesz go pod adresem www.perl.com lub w archiwum CPAN, www.cpan.org. Na tych stronach odszukasz wszystko, co tylko mo�e Ci by� potrzebne. Specjalnie pomini�to tutaj opis sposobu instalacji Perla w r�nych systemach operacyjnych. Instalacj� opisano bardzo precyzyjnie na stronie Perla (na przyk�ad instalacj� w systemie Unix przedstawiono na stronie www.perl.com/CPANlocal/doc/relinfo/INSTALL.html), a poza tym spos�b instalowania kolejnych wersji si� zmienia i zmiany te nie mog�yby znale�� odbicia w tej ksi��ce. Warto zaznaczy�, �e wiele ksi��ek zdezaktualizowa�o si� w�a�nie dlatego, �e podawano w nich dok�adne instrukcje instalacyjne. Dotyczy to szczeg�lnie ksi��ek o Javie, kt�rej instalacja zmienia�a si� niemal�e natychmiast po pojawieniu si� nowych wersji. Najnowsz� wersj� Perla mo�na zwykle znale��, u�ywaj�c ��cza �Get the latest version of Perl" (w witrynie www.perl.com), kt�re przeniesie Ci� na stron�, gdzie znajdziesz bezpo�rednie ��cza do najpopularniejszych wersji Perla, takich jak Perl for Win32 firmy ActiveState (pami�taj o pobieraniu wersji co najmniej 5.005, aby dana wersja by�a zgodna z wersj� dla systemu Unix i modu�ami dodatkowymi. Wcze�niejsze wersje nieco si� r�ni�). Je�li instalujesz Perla w systemie wielou�ytkownikowym, musisz mie� uprawnienia wi�ksze ni� przy normalnej pracy. Zapisywanie skrypt�w Perla Skrypty Perla to zwyk�e pliki tekstowe sk�adaj�ce si� z instrukcji tego j�zyka oraz deklaracji (jak zobaczysz, wystarczy deklarowa� formaty i procedury). Do tworzenia skrypt�w Perla jest potrzebny edytor tekstowy, kt�ry umo�liwia zapisywanie plik�w jako zwyk�ego tekstu. Zapisywanie plik�w jako zwyk�ego tekstu przekracza mo�liwo�ci niekt�rych edytor�w tekstowych. Problemem mo�e by� na przyk�ad u�ycie programu Microsoft Word, cho� w tym wypadku wystarczy zastosowa� okienko dialogowe Plik | Zapisz jako. Zasada og�lna jest taka, �e je�li wy�wietlisz plik w wierszu polece� (w systemach DOS i Windows jest to DOS), to nie zobaczysz na ekranie �adnych �krzaczk�w" (czyli dziwnych znak�w). Oczywi�cie prawdziwa kontrola poprawno�ci skryptu polega na tym, �e sprawdza si�, czy Perl jest w stanie skrypt odczyta� i zinterpretowa�. Skrypty Perla maj� zwykle rozszerzenie .pl, dlatego na przyk�ad tworzony ju� nied�ugo program b�dzie si� nazywa� hello.pl. Skrypty Perla nie musz� mie� takiego rozszerzenia, wystarczy samo .p, a nawet mo�na rozszerzenie ca�kiem pomin��. Jednak .pl jest cz�sto stosowane, a powszechnie wykorzystywana wersja Perla � ActiveState (przeznaczona dla 32-bitowych system�w Windows) wi��e to rozszerzenie z Perlem, dzi�ki czemu programy mo�na uruchomi� po dwukrotnym klikni�ciu. Uwidacznianie Perla dla skrypt�w Jak si� wkr�tce oka�e, skrypt Perla mo�na uruchamia� na dwa sposoby. Jedn� z mo�liwo�ci jest wywo�ywanie interpretera tego j�zyka (perl) bezpo�rednio z wiersza polece�: %perl hello.pl Mo�na te� spowodowa�, �e skrypt sam b�dzie potrafi� odnale�� Perla, dzi�ki czemu mo�liwe stanie si� uruchamianie skrypt�w jako samodzielnych polece�: %hello.pl Je�li za� nie dodawa�e� skryptom �adnego rozszerzenia, wywo�anie mo�e mie� posta�: %hello W r�nych systemach operacyjnych inaczej wskazuje si� skryptom po�o�enie Perla. Unix W systemie Unix interpreter Perla wskazuje si� za pomoc� dodania specjalnego pierwszego wiersza do skryptu (wiersz ten jest zb�dny w przypadku jawnego wywo�ywania interpretera, co pokazano wcze�niej): #!/usr/local/bin/perl # U�yj Perla Przy u�yciu takiego wiersza ze sk�adni� # ! bardzo wa�ne jest umieszczenie go na samym pocz�tku pliku. Wiersz w postaci pokazanej powy�ej wskazuje standardowe po�o�enie Perla w wi�kszo�ci system�w Unix. Oczywi�cie, Perl mo�e te� zosta� zainstalowany gdzie indziej, na przyk�ad b�dzie dost�pny jako /usr/bin/perl (w wielu systemach obydwie lokalizacje � /usr/bin/perl i /usr/local/bin/perl � wskazuj� to samo miejsce). Aby odnale�� Perla w Twoim systemie Unix, mo�esz u�y� polecenia which Perl. W celu wskazania, �e ma by� u�ywany Perl w wersji 5, cz�sto stosuje si� pierwszy wiersz w postaci: #!/usr/local/bin/perl5 # U�yj Perla 5 Istotne jest u�ywanie prze��cznika -w, kt�ry nakazuje interpreterowi pokazywanie w trakcie analizy kodu ostrze�e� (interpreter Perla tak naprawd� kompiluje kod przy pierwszym jego za�adowaniu, zatem ostrze�enia pojawi� si� od razu, chyba �e naka�esz p�niejsze za�adowanie kodu. Do �adowania kodu u�ywa si� instrukcji require, kt�ra zostanie om�wiona w rozdziale 15): #!/usr/local/bin/perl5 -w # U�yj Perla 5, poka� ostrze�enia Z uwagi na to, �e wiele wersji systemu Unix obcina wiersz # ! po pierwszych 32 znakach, mo�esz mie� k�opoty, je�li �cie�ka dost�pu do Perla jest d�uga: #!/usr/local/bin/users/standard/build36/per!5 # U�yj Perla 5 W takim przypadku, a tak�e wtedy, kiedy system nie rozpoznaje wiersza # !, mo�na do wywo�ania Perla u�y� interpretera pow�oki (shell): #!/usr/bin/sh eval '/usr/local/bin/users/standard/build36/perl5 -wS $ ${l+"$@"}' if 0; W takiej sytuacji uruchamiamy polecenie eval wywo�uj�ce jawnie Perla, a dodatkowo ustawiaj�c prze��cznik -w, powodujemy wy�wietlanie ostrze�e�. Parametr $0 powinien zawiera� pe�n� �cie�k�, jednak nie zawsze tak jest, wobec tego prze��cznikiem -s nakazujemy Perlowi w razie potrzeby wyszuka� skrypt. Dziwnie wygl�daj�ca konstrukcja ${l + "$@"} s�u�y do obs�ugi nazw plik�w zawieraj�cych spacje. Ca�y wiersz uruchamia skrypt Perla, ale nie zwraca �adnej warto�ci, gdy� wyra�enie if 0 nigdy nie jest prawdziwe. Przed uruchomieniem skryptu Perla w systemie Unix � przez podanie jedynie nazwy skryptu � konieczne jest uzyskanie prawa do wykonania pliku. Wi�cej na ten temat powiemy dalej, w punkcie �Uruchamianie skrypt�w Perla". Na pocz�tku wszystkich skrypt�w Perla mo�na u�ywa� wiersza w postaci: #!/usr/local/bin/perl5 -w Jednak dla skr�cenia zapisu (a tak�e dlatego, �e w wielu systemach operacyjnych to nie dzia�a) zwykle wiersz ten w ksi��ce b�dzie pomijany. Czytelnicy, dla kt�rych oka�e si� to przydatne, mog� oczywi�cie umieszcza� odpowiedni wiersz na pocz�tku swoich skrypt�w. MS-DOS W systemie MS-DOS trzeba zapewni� widoczno�� Perla, przekszta�caj�c skrypt na plik wsadowy BAT za pomoc� narz�dzia pl2bat.bat. Narz�dzie to jest dostarczane wraz z Perlem ActiveState. Je�li na przyk�ad mieliby�my skrypt hello.pl, zawieraj�cy: print "Hello!\n"; print "Press <Enter> to continue..."; <STDIN>; za pomoc� narz�dzia pl2bat.bat mo�na by�oby przekszta�ci� go na plik BAT, hello.bat, kt�ry mo�na uruchamia� bezpo�rednio z wiersza polece�. W celu przekszta�cenia hello.pl na hello.bat nale�y zastosowa� polecenie: C:\>pl2bat hello.pl Oto wynikowy plik hello.bat: @rem = '�*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 goto endofperl :WinNT perl -x -S "%0" %* if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel%==9009 echo You do not have Perl in your PATH. goto endofperl @rem '; #!perl #line 14 print "Hello!\n"; print "Press <Enter> to continue.. . "; <STDIN>; _END_ :endofperl Windows 95/98 i Windows NT Wersja ActiveState Perla dla Windows 95/98 i Windows NT modyfikuje rejestr w celu skojarzenia rozszerzenia .pl z interpreterem perl. W celu uruchomienia skryptu wystarczy dwukrotnie klikn�� skrypt. Otwiera si� w�wczas okno MS-DOS, wykonywany jest w nim skrypt i zanim da si� cokolwiek przeczyta�, okno MS-DOS jest z powrotem zamykane. Dalej w tym rozdziale, w punkcie �Unikanie natychmiastowego zamkni�cia okna skryptu w Windows 95/98 i NT", znajdziesz spos�b rozwi�zania tego problemu. Macintosh Na komputerach Macintosh skrypty Perla s� uruchamiane automatycznie � wystarczy je dwukrotnie klikn��. Kod Perla: instrukcje i deklaracje Kod Perla sk�ada si� z instrukcji i deklaracji. Deklaracje wskazuj� Per�owi, jak dane konstrukcje programistyczne maj� by� u�ywane. Mo�na r�wnie� deklarowa� zmienne, a konieczne s� jedynie w odniesieniu do format�w i procedur. Wi�cej o deklaracjach powiemy dalej w tej ksi��ce. Instrukcje mog� mie� dwojak� posta�: prost� i z�o�on�. Instrukcja prosta to wyra�enie wykonuj�ce jakie� zadanie. W kodzie instrukcje proste ko�cz� si� �rednikiem (;), jak na przyk�ad poni�szy fragmencik, w kt�rym funkcja print wy�wietla tekst Hello! oraz znak nowego wiersza \n (zobacz �Podstawowe formatowanie tekstu", dalej w tym rozdziale), powoduj�cy przej�cie do nast�pnego wiersza: print "Hello!\n"; Instrukcje z�o�one sk�adaj� si� z wyra�e� i blok�w. Bloki w Perlu s� ograniczane nawiasami klamrowymi { i }, mog� zawiera� wiele instrukcji. Bloki stanowi� te� zakresy dla obiekt�w takich, jak zmienne (w zakresie mo�na na przyk�ad u�ywa� zmiennych, ale zagadnienie to om�wimy dalej), przy czym po nawiasach klamrowych nie u�ywa si� �rednik�w. Oto przyk�ad bloku, zawieraj�cy z�o�on� instrukcj� w p�tli for (wi�cej o p�tli for w rozdziale 5): for ($loop_index = 1; $loop_index <=5; $loop_index++) { print "Hello"; print "there!\n"; } Zagadnienie zwi�zane: P�tla for Uruchamianie skrypt�w Perla Za��my, �e mamy plik hello.pl zawieraj�cy skrypt Perla: #!/usr/local/bin/perl5 -w # U�yj Perla 5, w��cz ostrze�enia print "hello\n"; Jak taki skrypt uruchomi�? Jest to podstawowe zadanie zwi�zane ze stosowaniem Perla, ale z uwagi na to, �e istnieje wiele sposob�w jego realizacji, przyjrzymy si� im po kolei. Je�li skrypt potrafi odnale�� Perla Je�li skrypt jest w stanie odnale�� Perla (zajrzyj do punktu �Uwidacznianie Perla dla skrypt�w", wcze�niej w tym rozdziale), �atwo go uruchomi�. W Uniksie oznacza to, �e pierwszy wiersz skryptu zawiera polecenie # ! /usr/local/bin/perl5 -w. Aby skrypt sta� si� plikiem wykonywalnym, nale�y u�y� polecenia chmod: chmod +x hello.pl Trzeba te� si� upewni�, �e skrypt nale�y do bie��cej �cie�ki (PATH). W przypadku u�ycia pow�oki csh, lub pow�oki od niej pochodnej, trzeba sprawdzi� polecenia set path w pliku .login. W przypadku stosowania pow�oki sh � lub jej pochodnej � nale�y sprawdzi� ustawienie zmiennej PATH w pliku .profile. Je�li jako pow�oka u�ywany jest bash, trzeba sprawdzi� ustawienia PATH w pliku .bashprofile. W og�le powinni�my wykorzysta� technik� odpowiedni� do stosowanej pow�oki (interpretera polece�). Wtedy mo�na uruchomi� skrypt z wiersza polece�: %hello.pl W systemach Windows i Macintosh wystarczy dwukrotnie klikn�� plik skryptu. W Windows plikom nale�y nadawa� rozszerzenie .pl, kt�re jest u�ywane przez oprogramowanie ActiveState do ��czenia si� z interpreterem Perla. W systemie MS-DOS, po u�yciu pliku pl2bat.bat do konwersji skryptu na plik BAT (zajrzyj do punktu �Uwidacznianie Perla dla skrypt�w" wcze�niej), wystarczy uruchomi� plik wsadowy BAT: C:\hello.bat Aby u�y� Perla z wiersza polece� Aby wywo�a� jawnie interpreter Perla, trzeba upewni� si�, �e program perl znajduje si� w �cie�ce, a nast�pnie u�y� polecenia perl o sk�adni wywo�ania podanej ni�ej. Prze��czniki wskazywane w nawiasach kwadratowych s� opcjonalne. Dalej w tym rozdziale, w punkcie �U�ycie prze��cznik�w wiersza polece�", poznamy znaczenie wszystkich prze��cznik�w: perl [ -sTuU ] [ -hv ] [ -V[:configvar] ] [ -cw ] [ -d[:debugger] ] [ -D[number/list] } l -pna ] [ -Fpattern ] [ -l[octal] ] { -O[octal] } [ -Idir ] [ -m[-]module } [ -M[-} 'module...' } [ -P ] [ -S ] [ -x[dir) ] [ -i[extension] ] [ -e 'command' ] [ -- ] [ programfile ] [ argument ] ... W przypadku takiego u�ycia polecenia perl interpreter Perla pobiera skrypt nast�puj�co: * z pojedynczego wiersza w przypadku u�ycia prze��cznik�w -e; * z pliku o nazwie podanej w wierszu polece�; * zbieraj�c kolejne wiersze ze standardowego wej�cia, je�li jako nazw� pliku podano kresk� (-). Teraz przyjrzymy si� kolejnym metodom przekazywania skryptu. U�ywaj�c prze��cznika -e, mo�na Per�owi przekazywa� bezpo�rednio kod, wiersz po wierszu (w niekt�rych systemach mo�na u�y� wielu prze��cznik�w -e, aby przekaza� wiele wierszy kodu). Jak wspomniano we wprowadzeniu, wyniki dzia�ania programu b�d� zaznaczane kursyw�: %perl -e "print 'Hello!\n'; " Hello! Mo�na oczywi�cie tak�e zapisa� skrypt w pliku i przekaza� interpreterowi nazw� tego pliku. Oto przyk�adowa tre�� pliku hello.pl (pomijamy wiersz # !, gdy� interpreter Perla wywo�amy jawnie): print "Hello!\n"; Skrypt mo�na wywo�a�, podaj�c nazw� pliku: %perl hello.pl Hello! Mo�na w ko�cu wpisa� wielowierszowy skrypt jako nazw� pliku, podaj�c kresk� (-). Jest to zreszt� opcja domy�lna, nawet je�li zostanie pomini�ta kreska i napiszesz jedynie perl: %perl - W tym przypadku Perl b�dzie czeka� na wpisanie ca�ego skryptu: %perl - print "Hello!\n"; Aby uruchomi� skrypt w Perlu, nale�y wpisa� _END_: %perl - print "Hello!\n"; _END_ Hello! Je�li u�yta zostanie powy�sza metoda uruchamiania skrypt�w Perla, ca�y skrypt wykona si� od razu. W celu testowania wygodne jest uruchamianie kolejnych polece� jedno za drugim, interaktywnie. Robi si� to, u�ywaj�c mini interpretera polece� Perla, kt�ry zostanie om�wiony w nast�pnym punkcie. Interaktywne uruchamianie skrypt�w Perla Podczas testowania program�w przydatna jest mo�liwo�� interaktywnego uruchamiania kolejnych instrukcji Perla (w takiej kolejno�ci, jak je wpisano w skrypcie) i od razu ogl�dania ich wynik�w. �eby to zrobi�, mo�na napisa� prosty interpreter Perla � oto prosty, ale dzia�aj�cy przyk�ad: #!/usr/bin/perl5 -w # U�ywamy Perla 5, w��czamy ostrze�enia #use strict; # Wymagane deklarowanie zmiennych itp. my $count = 0; # $count u�ywana do parowania {}, () itd. my $statement = ""; # $stacement zawiera wielowierszowe instrukcje local $SIG(_WARN_} = sub {); # Pominiecie zg�aszania b��d�w while (<>) { # Pobieranie danych z klawiatury chomp; # Wyczyszczenie bufora wej�ciowego while (/{|\(|\[/g) {$count++}; # Szukaj {, ( itd. while (/}|\)|\]/g) {$count--}; # Paruj z ), ) itd. $statement .= $_; # Do��cz wprowadzone dane do instrukcji if (!$count) { # Ewaluuj tylko, je�li sparowano {}, () eval $statement; # Ewaluuj instrukcj� Perla if($@) (print "B��d sk�adniowy.\n"}; # Poinformuj o b��dzie $statement = ""; # Wyczyszczenie bie��cej instrukcji $count = 0; # Wyzerowanie licznika {, (. } } Skrypt ten utworzy prosty interpreter Perla, kt�ry potrafi obs�u�y� wiele instrukcji � nawet wielowierszowe instrukcje z�o�one. U�yta zosta�a funkcja Perla � eval, kt�ra interpretuje przekazane jej instrukcje. Zanim eval zacznie je przetwarza�, instrukcje wielowierszowe s� zapisywane, a nast�pnie zliczane s� nawiasy otwieraj�ce ((, { i [) i zamykaj�ce (), } i ]), dzi�ki czemu wiadomo, kiedy instrukcja jest zako�czona. Mo�na na przyk�ad nasz interpreter uruchomi� i przypisa� zmienn� (wi�cej o zmiennych w nast�pnym rozdziale): $text = "Hello!\n"; Warto�� zmiennej mo�emy nast�pnie wy�wietli�: $text = "Hello! \n"; print $text; Od razu pokazane zostan� wyniki: $text = "Hello! \n"; print $text; Hello! Istnieje te� mo�liwo�� sprawdzenia dzia�ania skrypt�w wielowierszowych (ka�da instrukcja jest wykonywana, kiedy zostanie sko�czona, zatem wyniki dzia�ania print s� pokazywane natychmiast): $variablel = l ; $variable2 = 3; print $variablel + $variable2; 4 Mo�na w ko�cu wpisywa� wielowierszowe instrukcje z�o�one, jak poni�szy fragment kodu, kt�ry sk�ada si� z p�tli for: for ($loop_index = 1; $loop_index <=5; $loop_index++) { print "Hello!\n"; } Hello! Hello! Hello! Hello! Hello! Aby przerwa� dzia�anie interpretera, wystarczy wpisa� exit. Tak tworzone samodzielnie interpretery Perla mog� by� bardzo przydatne do testowania kr�tkich skrypt�w, bez konieczno�ci zapisywania ich w pliku i uruchamiania w ten spos�b. Pami�taj, �e podany interpreter stanowi tylko przyk�ad i nie jest pe�nym interpreterem � problemy mog� si� pojawi� przy pr�bie przetestowania polecenia eval, gdy� jest ono u�ywane do uruchamiania skryptu. U�ycie prze��cznik�w wiersza polece� Przy stosowaniu polecenia perl dost�pna jest niewiarygodna liczba prze��cznik�w (nawiasy kwadratowe, [ ], oznaczaj�, �e dany prze��cznik jest opcjonalny): perl [ -sTuU ] [ -hv ] [ -V[:configvar] ] [ -cw ] [ -d[:debugger] ] [ -D[number/list] ] [ -pna ] [ -Fpattern ] [ -l[octal] } [ -O(octal) ] [ -Idir ] [ -m[-]module ] [ -M(-] 'module..." ] [ -P l [ -S ] [ -x[dir] ] [ -i[extension] ] [ -e 'command' ] [ -- ] [ programfile ] [ argument ] ... Po co s� wszystkie te prze��czniki? Oto ich om�wienie (niekt�rymi tematami, kt�rych prze��czniki te dotycz�, zajmiemy si� dopiero w dalszych rozdzia�ach): -0 [digits] � wskazuje separator rekordu wej�ciowego (zapisany te� w specjalnej zmiennej $/) jako liczb� �semkow�; -a � przy u�yciu opcji -a, -n lub -p w��cza si� tryb autosplit. Tryb ten powoduje rozbicie wierszy wej�ciowych (czyli rozdzielanie ich na s�owa) i umieszczanie ich w specjalnej tablicy @F; -c � powoduje, �e Perl sprawdza sk�adni� skryptu i ko�czy swoje dzia�anie, natomiast nie wykonuje skryptu; -d � uruchamia skrypt w debuggerze Perla.; -d:name � uruchamia skrypt pod kontrol� modu�u debugguj�cego lub �ledz�cego, zainstalowanego jako Devel::name; -e commandline �opcji tej mo�na u�y� do wprowadzenia gotowego skryptu. W niekt�rych systemach za pomoc� szeregu kolejnych opcji -e mo�na tworzy� skrypty wielowierszowe; -Fpattern �je�li uruchomiono -a, okre�la wzorzec rozdzielania; -h � wy�wietla zestawienie dost�pnych opcji; -i [extension] � m�wi, �e pliki przetwarzane przez konstrukcj� <> (zajrzyj dalej do punktu �Odczyt wprowadzanych danych") maj� by� edytowane in situ: zmieniana ma by� nazwa pliku wej�ciowego na inn�, a nast�pnie wyniki instrukcji print maj� by� zapisywane w pliku o pierwotnej nazwie; -Idirectory � nakazuje Per�owi wyszukiwa� modu�y w katalogu directory, -l[octnum] � wp�ywa na przetwarzanie ko�ca wiersza. W przypadku u�ycia z opcjami -n lub -p automatycznie usuwa ze strumienia wej�ciowego zmienn� $/ (jest to specjalna zmienna Perla zawieraj�ca separator rekordu wej�ciowego, domy�lnie znak nowego wiersza). Zmiennej $\ (separatorowi rekordu wyj�ciowego) przypisuje octnum jako liczb� szesnastkowaj znak ten b�dzie u�ywany jako separator przez instrukcj� print; -m[-]module lub M[-]module lub -M[-]'module ...' � przed uruchomieniem skryptu w��cza do niego wskazany modu� (za pomoc� instrukcji use module); -n � powoduje, �e Perl otacza skrypt p�tl� while (<>) (w punkcie �Odczyt wprowadzanych danych" znajdziesz wi�cej informacji o konstrukcji <>). Poni�szy wiersz na przyk�ad wy�wietla zawarto�� pliku file.txt: perl -ne "print;" file.txt -P � uruchamia skrypt, poddaj�c go uprzednio dzia�aniu preprocesora j�zyka C. Umo�liwia to u�ycie dyrektyw C, takich jak #include czy #define, a tak�e zastosowanie kompilacji warunkowej; -p � powoduje, �e Perl otacza skrypt nast�puj�c� p�tl�: while (<>) { [tutaj umieszczany jest ca�y skrypt] } continue { ' print or die "-p destination: $!\n"; } -s � umo�liwia analizowanie prze��cznik�w wiersza polece�. Na przyk�ad, je�li skrypt wywo�any zostanie z prze��cznikiem -www, poni�sza instrukcja wy�wietli tekst �Znaleziono przei�cznik\n": if ($www) {print "Znaleziono prze��cznik\n";} -S � powoduje, �e do wyszukiwania skryptu u�ywana jest zmienna �rodowiskowa PATH; -T � umo�liwia �ledzenie b��d�w. Opcja cz�sto jest u�ywana w programach CGI; -u � powoduje, �e Perl po skompilowaniu skryptu zapisuje na dysku obraz pami�ci (core dump); -U � umo�liwia Perlowi wykonywanie �niebezpiecznych" operacji, takich jak cho�by zmiana nazw katalog�w; -V � wy�wietla zestawienie parametr�w konfiguracyjnych Perla; -V:name � wy�wietla warto�� podanego parametru konfiguracyjnego Perla; -w � wy�wietla ostrze�enia (zajrzyj do nast�pnego punktu); -x directory � informuje Perla, �e skrypt jest w��czony do komunikatu. Tekst nie b�dzie przetwarzany, a� do pierwszego wiersza zaczynaj�cego si� od # ! i zawieraj�cego wyraz perl; -- � kreski te s� opcjonalne, wskazuj � koniec prze��cznik�w. Zagadnienie zwi�zane: Uruchamianie debuggera Dost�pne polecenia debuggera U�ycie prze��cznika -w � ostrze�enia U�ywaj�c Perla, dobrze jest stosowa� prze��cznik -w. �mia�o mo�na by stwierdzi�, �e wielu u�ytkownik�w Perla ma na tym punkcie bzika. Tak czy inaczej, Autor tak�e zaleca stosowanie ostrze�e�. Prze��cznik -w powoduje generowanie wielu r�nych ostrze�e�, mi�dzy innymi o: * nazwach zmiennych, do kt�rych wyst�puje tylko jedno odwo�anie, * zmiennych skalarnych (prostych), kt�re zosta�y u�yte przed przypisaniem im warto�ci, * wielokrotnie zdefiniowanych procedurach, * odwo�aniach do niezdefiniowanych uchwyt�w plik�w (w Perlu dost�p do plik�w jest realizowany przez uchwyty. Wi�cej informacji na ten temat znajdziesz w nast�pnym punkcie), * uchwytach plik�w otwartych tylko do odczytu, do kt�rych mimo to pr�buje si� co� zapisywa�, * warto�ciach u�ywanych jako liczby, kt�re jednak nie s� liczbami, * u�yciu tablic tak, jakby by�y to zmienne skalarne, * procedurach, w kt�rych rekurencja jest zagnie�d�ona bardziej ni� na 100 poziom�w. Obs�uga wej�ciowych i wyj�ciowych danych tekstowych przy pomocy standardowych uchwyt�w plik�w W Perlu wej�cie i wyj�cie traktowane s� jako kana�y (strumienie), kt�rych u�ywa si� za po�rednictwem uchwyt�w plik�w. Taki uchwyt jest po prostu warto�ci�, kt�ra reprezentuje w Perlu plik, a jest okre�lana w momencie otwierania owego pliku. Do danych tekstowych mo�na u�y� trzech predefiniowanych uchwyt�w plik�w: * STDIN � standardowy kana� wej�ciowy skryptu, * STDOUT � standardowy kana� wyj�ciowy, * STDERR � standardowy kana� wyj�ciowy b��d�w. Domy�lnie powy�sze uchwyty plik�w odpowiadaj� strumieniom terminala. Dalej w tym rozdziale u�ywa� b�dziemy w�a�nie powy�szych predefiniowanych uchwyt�w. Wy�wietlanie danych tekstowych Aby wydrukowa� dane tekstowe do pliku lub kana�u STDOUT, u�ywa si� instrukcji print, kt�ra mo�e mie� trojak� posta�: print FILEHANDLE LISTA print LISTA print Je�li nie zostanie podany uchwyt pliku, zostanie u�yty STDOUT. Je�li nie podana zostanie lista drukowanych tre�ci (LISTA; lista mo�e zawiera� tak�e tylko jeden element), funkcja print drukuje zawarto�� zmiennej specjalnej $_. Zmienna $_ zawiera domy�lnie dane z kana�u wej�ciowego (wi�cej informacji na ten temat znajdziesz dalej, w punkcie �Odczyt wprowadzanych danych"). Oto przyk�ad, w kt�rym drukujemy do kana�u wyj�ciowego tekst �Hello!" i znak nowego wiersza: print "Hello!\n"; Hello! Funkcja print dzia�a na takiej zasadzie, �e pobiera list� element�w (listami w Perlu zajmiemy si� dok�adniej w nast�pnym rozdziale). Oznacza to, �e mo�na poda� list� element�w, kt�re maj� by� wydrukowane, oddzielaj�c je od siebie przecinkami: print "Hello ", "there!\n"; Hello there! Zwr�� uwag�, �e w Perlu mo�na uzyska� bardzo ciekawe efekty, gdy� j�zyk ten udost�pnia formaty i formatuj�c� odmian� funkcji print, printf, kt�ra zostanie om�wiona w rozdziale 11. Zagadnienie zwi�zane: printf � drukowanie formatowanych danych z list print � drukowanie do pliku Wy�wietlanie numer�w wierszy i nazw plik�w ze skryptami W skrypcie Perla mo�na wy�wietla� numery wykonywanych wierszy oraz nazw� pliku, a stosuje si� do tego odpowiednio _LINE_ oraz _FILE_. Na przyk�ad poni�szy jednowierszowy skrypt wy�wietli numer bie��cego wiersza, czyli l: %perl -e "print _LINE_;" 1 Wielokrotne drukowanie tekstu Je�li trzeba wielokrotnie wydrukowa� jeden wyraz, mo�na u�y� operatora powt�rzenia Perla, czyli x: print "Hello!\n" x 5; Hello! Hello! Hello! Hello! Hello! Mo�na te� narysowa� poziom� kresk�, powtarzaj�c minusy: print "-" x 30 ------------------------------ Zagadnienie zwi�zane: Mno�enie i dzielenie Podstawowe formatowanie tekstu Stosuj�c znaki specjalne, mo�na w Perlu w podstawowym zakresie formatowa� tekst. Znak specjalny to znak poprzedzony lewym uko�nikiem (\), kt�ry wskazuje funkcjom takim, jak print, �e maj� obs�u�y� tekst w jaki� szczeg�lny spos�b. Niekt�re znaki specjalne i ich znaczenie podano w tabeli 1.1. Tabela 1.1 Znaki specjalne i ich znaczenie Znak specjalny Znaczenie \" cudzys��w podw�jny \t tabulator \n znak nowego wiersza \r znak powrotu kursora \f znak nowej strony \b backspace (cofni�cie si� o znak) \a sygna� d�wi�kowy \e escape \033 znak zapisany �semkowo \x1b znak zapisany szesnastkowo \c[ znak kontrolny Oto przyk�ad pokazuj�cy, jak wydrukowa� cudzys��w: print "\"Hello!\"\n"; "Hello!" Poni�ej pokazujemy przyk�ad u�ycia tabulator�w: print "Hello\tfrom\tPerl\n"; Hello from Perl Oto spos�b utworzenia wielu wierszy przy pomocy znaku nowego wiersza, \n: print "Hello\nfrom\nPerl.\n"; Hello from Perl. Nale�y pami�ta�, �e s� to tylko podstawowe mo�liwo�ci formatowania, tymczasem Perl pozwala uzyska� znacznie wi�cej. Jest jeszcze jeden spos�b korzystania z tekstu w Perlu � w ko�cu j�zyk ten pierwotnie stworzono w�a�nie do obs�ugi danych tekstowych. Przyk�ad opisano w nast�pnym punkcie, gdzie s� omawiane dokumenty w��czane. Zagadnienie zwi�zane: sprintf � formatowanie tekstu printf � drukowanie formatowanych danych z list Formaty: formatowanie danych wielowierszowych Wy�wietlanie tekstu niesformatowanego: otwierane dokumenty Perla Dokumenty otwierane Perla umo�liwiaj� wy�wietlanie tekstu w takiej postaci, w jakiej zosta� on wstawiony do skryptu. Aby zacz�� taki dokument, trzeba wpisa� � z jakim� znacznikiem � tutaj u�yli�my EOD: print <<EOD; Teraz wystarczy niesformatowany tekst umieszcza� bezpo�rednio w skrypcie, ko�cz�c znowu znacznikiem EOD: print <<EOD; This is a "here" document. EOD W rezultacie skrypt wy�wietli otwierany dokument: This is a "here" document. EOD Komentowanie kodu Przy tworzeniu z�o�onych skrypt�w przydatne jest wstawianie do nich komentarzy maj�cych co� przypomnie� lub obja�ni�. Komentarze przez Perl s� pomijane, po prostu u�atwiaj� zrozumienie struktury i sposobu dzia�ania skrypt�w. W Perlu komentarze poprzedza si� znakiem # � interpreter pominie ten znak i ca�y tekst za nim si� znajduj�cy, a� do ko�ca wiersza. Oto przyk�ad pokazywanego poprzednio skryptu, w kt�rym dodano komentarze obja�niaj�ce dzia�anie skryptu: #!/usr/bin/perlb -w # U�ywamy Perla 5, w��czamy ostrze�enia #use strict; # Wymagane deklarowanie zmiennych itp. my $count = 0; # $count u�ywana do parowania (), () itd. my $statement = ""; # $statement zawiera wielowierszowe instrukcje local $SIG{_WARN_} = sub {}; # Pominiecie zg�aszania b��d�w while {<>} { # Pobieranie danych z klawiatury chomp; # Wyczyszczenie bufora wej�ciowego while (/{|\(|\[/g) i$count++); # Szukaj {, ( itd. while (/}|\)|\]/g) )$count--); # Paruj z }, ) itd. $statement .= $_; # Do��cz wprowadzone dane do instrukcji if (!$count) { # Ewaluuj tylko, je�li sparowano {}, () eval $statement; # Ewaluuj instrukcj� Perla if($@) (print "B��d sk�adniowy.\n"}; # Poinformuj o biedzie $statement = ""; # Wyczyszczenie bie��cej instrukcji $count = 0; # Wyzerowanie licznika {, (. } } Odczyt wprowadzanych danych Wcze�niej w tym rozdziale pokazano, jak u�y� funkcji print do wydrukowania danych wynikowych. Pojawia si� pytanie: jak jednak pobiera� dane wej�ciowe? Aby odczyta� je z pliku STDIN, wystarczy u�y� pary nawias�w tr�jk�tnych, < i >. Oto na przyk�ad p�tla while (om�wiona w rozdziale 5.), kt�ra odczytuje dane wprowadzone przez u�ytkownika, zapisuje poszczeg�lne wiersze w zmiennej $temp i je drukuje: while ($temp = <STDIN>) { print $temp; } Kiedy uruchomisz ten skrypt, wpiszesz na przyk�ad �Hello!" i wci�niesz ENTER, skrypt zwr�ci wpisane dane: Hello! Hello! Istnieje kr�tsza metoda zapisania tego samego �jak zwykle w Perlu (funkcjonuje nawet pewien slogan zwi�zany z Perlem: �Da si� to zrobi� te� inaczej"). Informacje na ten temat znajdziesz w nast�pnym punkcie. Zagadnienia zwi�zane: P�tla while U�ycie zmiennej domy�lnej $_ Kiedy u�ywa si� konstrukcji <STDIN>, nie przypisuj�c wyniku do �adnej zmiennej, Perl automatycznie wynik ten przypisze zmiennej $_. Wiele funkcji Perla stosuje t� zmienn� jako zmienn� domy�ln�, wykorzystywan�, kiedy nie podano �r�d�a informacji jawnie. Jedn� z takich funkcji jest cho�by print: je�li funkcji tej nie zostan� podane parametry, wydrukuje zawarto�� $_ (istnieje w Perlu jeszcze wiele innych zmiennych specjalnych, na przyk�ad $! zawieraj�ca ostatni b��d. Wi�cej o nich w rozdziale 9.). Mo�na tak�e w og�le pomin�� STDIN pomi�dzy nawiasami �je�li u�yje si� tylko < i >, w�a�nie STDIN jest plikiem domy�lnym. Warto wspomnie�, �e w Perlu istnieje mn�stwo ustawie� domy�lnych, kt�re u�atwiaj� prac� ekspertom, ale stanowi� zagadk� dla nowicjuszy. Przyjrzyj si�, jak wygl�da skr�cony kod z poprzedniego punktu: while (<>) { print; } Ten kr�ciutki fragment mo�na zapisa� te� nast�puj�co: while($_ = <STDIN>) { print $_; } Zagadnienie zwi�zane: $! � ostatni b��d Czyszczenie danych wej�ciowych Dane wej�ciowe, odczytane z STDIN, zawieraj� wszystko, co tylko wpisa� u�ytkownik, w tym znak nowego wiersza na ko�cu. U�ywaj�c funkcji chop lub chomp, mo�na si� pozby� znaku nowego wiersza. Oto spos�b u�ycia chop: chop VARIABLE chop LISTA chop Funkcja ta odrzuca z tekstu ostatni znak i go zwraca. Je�li pomini�to zmienn� VARIABLE, dane s� odrzucane ze zmiennej $_. Sp�jrzmy na poni�szy skrypt: while (<>) { print; } Kiedy drukowane s� kolejne wiersze wej�ciowe, na ko�cu ka�dego z nich znajduje si� znak nowego wiersza. Je�li jednak u�yjemy funkcji chop, po poszczeg�lnych wierszach znak nowego wiersza nie b�dzie si� ju� pojawia�: while (<>) { chop; print; } Opr�cz funkcji chop mo�na te� u�y� chomp: chomp VARIABLE chomp LISTA chomp Funkcja ta jest bezpieczniejsz� wersj� chop, usuwa wszelkie zako�czenie wiersza pasuj�ce do warto�ci $/ � specjalnej zmiennej Perla, zawieraj�cej separator rekord�w wej�ciowych (domy�lnie znak nowego wiersza). Funkcja ta zwraca ��czn� liczb� usuni�tych znak�w, a u�ywa jej si� zwykle do usuwania z rekordu wej�ciowego znak�w nowego wiersza. Je�li pomini�ta zostanie zmienna VARIABLE, znaki usuwane s� z $_. Unikanie natychmiasto