Poradnik Perla
Co to jest Perl?
Perl jest wysokopoziomowym, uniwersalnym, interpretowanym, dynamicznym jฤzykiem programowania. Perl to termin oznaczajฤ cy โPractical Extraction and Reporting Languageโ, chociaลผ nie ma akronimu dla Perla. Zostaล wprowadzony przez Larry'ego Walla w 1987 roku. Jฤzyk Perl zostaล specjalnie zaprojektowany do edycji tekstu. Ale teraz jest szeroko stosowany do rรณลผnych celรณw, w tym administracji systemem Linux, programowania sieciowego, tworzenia stron internetowych itp.
Ujmijmy to w prosty sposรณb. Chociaลผ komputery rozumiejฤ tylko zera i jedynki (jฤzyk binarny/jฤzyk maszynowy/[jฤzyk niskiego poziomu]), dla nas, ludzi, bardzo trudno jest programowaฤ w jฤzyku binarnym. Perl to jฤzyk programowania, ktรณry wykorzystuje elementy jฤzyka naturalnego, czyli sลowa uลผywane w powszechnym jฤzyku angielskim, dziฤki czemu jest ลatwiejszy do zrozumienia przez ludzi [jฤzyk wysokiego poziomu] Teraz pojawiล siฤ problem; komputery nie rozumiejฤ jฤzykรณw wysokiego poziomu, ktรณre my, ludzie, moลผemy ลatwo zrozumieฤ. W tym celu potrzebujemy czegoล, co przetลumaczy jฤzyk wysokiego poziomu na jฤzyk niskiego poziomu. Tutaj z pomocฤ przychodzi nam tลumacz. Interpreter to oprogramowanie, ktรณre konwertuje program napisany w jฤzyku wysokiego poziomu na jฤzyk niskiego poziomu, aby komputer mรณgล zrozumieฤ i wykonaฤ instrukcje zapisane w programie. Dlatego Perl jest interpretowany jฤzyk programowania.
Gdzie uลผywany jest Perl?
Moc jฤzyka skryptowego Perl moลผna wykorzystaฤ w wielu dziedzinach. Perl jest najczฤลciej uลผywany w rozwoju sieci Web. Perl jest rรณwnieลผ uลผywany do automatyzacji wielu zadaล na serwerach sieci Web i innych zadaล administracyjnych, moลผe automatycznie generowaฤ wiadomoลci e-mail i czyลciฤ systemy. Perl jest nadal uลผywany do swojego pierwotnego celu, tj. wyodrฤbniania danych i generowania raportรณw. Moลผe generowaฤ raporty dotyczฤ ce wykorzystania zasobรณw i sprawdzaฤ problemy z bezpieczeลstwem w sieci. Z tego powodu Perl staล siฤ popularnym jฤzykiem uลผywanym w rozwoju sieci Web, sieciach i bioinformatyce. Oprรณcz tego wszystkiego perl moลผe byฤ rรณwnieลผ uลผywany do programowania CGI.
Perl moลผe byฤ rรณwnieลผ wykorzystywany do tworzenia i manipulacji obrazami. Oprรณcz tego sieciowanie przez telnet, FTP itp., tworzenie graficznego interfejsu uลผytkownika, elektronika VLSI i tworzenie filtrรณw poczty w celu zmniejszenia praktyk spamowania to niektรณre przypadki uลผycia Perla.
Perl jest rรณwnieลผ znany z implementacji praktyk OOP (programowania obiektowego) i obsลuguje wszystkie formy dziedziczenia (proste, wielokrotne i diamentowe), polimorfizm i hermetyzacjฤ. Perl jest wystarczajฤ co elastyczny, aby obsลugiwaฤ praktyki proceduralne i OOP jednoczeลnie. Perl ma rรณwnieลผ dodatkowe moduลy, ktรณre pozwalajฤ pisaฤ lub uลผywaฤ/ponownie uลผywaฤ kodu napisanego w Python, PHP, PDL, TCL, Oktawa, Java, C, C++, Basic, Ruby i Lua w skrypcie Perla. Oznacza to, ลผe moลผesz ลฤ czyฤ Perla z tymi dodatkami jฤzyki programowania raczej przepisanie istniejฤ cego kodu.
Zastosowania jฤzyka programowania Perl
Dlaczego warto uลผywaฤ Perla?
Prawdฤ jest, ลผe istniejฤ inne jฤzyki programowania, ktรณrych moลผna uลผyฤ do wykonania wszystkich czynnoลci opisanych powyลผej, wiฤc dlaczego miaลbyล uลผywaฤ Perla? Perla jest bardzo ลatwo siฤ nauczyฤ, zwลaszcza jeลli masz doลwiadczenie w programowaniu komputerowym. Perl zostaล zaprojektowany tak, aby uลatwiฤ ludziom pisanie i zrozumienie, a nie uลatwiaฤ przetwarzanie przez komputery. Uลผywa wyraลผeล regularnych. Jego naturalny styl jฤzyka rรณลผni siฤ od innych jฤzykรณw programowania, ktรณre wykorzystujฤ specyficznฤ gramatykฤ i skลadniฤ; dlatego Perl jest bardzo elastyczny i nie narzuca ci ลผadnego konkretnego sposobu myลlenia o rozwiฤ zaniu lub problemie. Perl jest niezwykle przenoลny. Moลผe dziaลaฤ na kaลผdym systemie operacyjnym, ktรณry ma zainstalowany interpreter Perla, wiฤc jest niezaleลผny od platformy. Wszystkie systemy Linux OperaSystemy ting sฤ wyposaลผone w Perl, wiฤc moลผesz od razu zaczฤ ฤ kodowaฤ w Perlu w Linuksie. Jest to inne niลผ w przypadku skryptรณw powลoki, gdzie kod zmienia siฤ w zaleลผnoลci od uลผywanej dystrybucji Linuksa, co sprawia, ลผe โโjest on coraz mniej przenoลny Maลe, specyficzne zadania w Perlu stajฤ siฤ bardzo ลatwe i szybkie. W tym samouczku Perla dla poczฤ tkujฤ cych dowiesz siฤ, jak kodowaฤ maลe, szybkie programy do okreลlonych zadaล. Weลบmy prosty przykลad klasycznego programu Hello World, ktรณry sลuลผy do rozpoczฤcia nauki dowolnego jฤzyka programowania majฤ cego korzenie w systemie UNIX:
Przykลad: Perl, witaj ลwiecie

#!/usr/bin/perl print "Hello, world!";
Wyjลcie:
Witaj ลwiecie!
Powyลผsze dwie linie kodu zostanฤ wydrukowane Witaj, ลwiecie! Czy nie byลo to zbyt proste i szybkie? Studenci ze znajomoลciฤ jฤzyka C, C++ bฤdzie wiedziaล, ลผe uzyskanie tego samego wyniku w tych jฤzykach wymaga znacznie wiฤkszej liczby linii kodu.
Moลผesz siฤ zastanawiaฤ, dlaczego Perl jest tak znany w sieci. Jest to proste, poniewaลผ wiฤkszoลฤ rzeczy, ktรณre dziejฤ siฤ w sieci, ma charakter TEKSTOWY, a Perl jest bardzo dobry w przetwarzaniu tekstu. Jeลli porรณwnamy Perla z ktรณrymkolwiek z jฤzykรณw, to Perl bฤdzie najlepszym jฤzykiem, ktรณry jest dobry w obsลudze plikรณw, przetwarzaniu tekstu i raportowaniu wynikรณw
Jednฤ z najlepszych zalet Perla jest to, ลผe tak jest swobodnie korzystaฤ
Spoลecznoลฤ Perl jest gลฤboko przekonana, ลผe โโoprogramowanie powinno byฤ swobodnie dostฤpne, swobodnie modyfikowalne i swobodnie dystrybuowane. Kilku wolontariuszy ze spoลecznoลci Perl stara siฤ, aby jฤzyk programowania byล jak najlepszy.
Zalety i wady Perla
| Plusy: | Wady: |
|---|---|
|
|
|
|
|
Zacznijmy
Majฤ c wystarczajฤ cฤ wiedzฤ na temat historii Perla i podstawowych pojฤฤ programowania komputerowego wymaganych do kodowania w Perlu, nadszedล czas, aby zanurzyฤ siฤ i zaczฤ ฤ z Perlem. Nastฤpny rozdziaล nauczy Ciฤ, jak skonfigurowaฤ Perla w swoim systemie i przygotowaฤ siฤ do podrรณลผy kodowania w Perlu. Ten samouczek skryptowania w Perlu bฤdzie traktowaล Linuksa jako system operacyjny, ktรณrego uczniowie bฤdฤ uลผywaฤ do kodowania w Perlu.
Pobierz i zainstaluj Perla โ Windows, Mac i Linux
Jak zdobyฤ Perla?
Dobre wieลci prawdopodobnie to masz!
Jeลli jednak nie moลผesz znaleลบฤ go juลผ w swoim systemie, nadal moลผesz pobraฤ go za darmo.
Aby dowiedzieฤ siฤ, czy masz juลผ zainstalowany Perl, przejdลบ do wiersza poleceล i wpisz: perl -v

Polecenie wyลwietli wersjฤ Perla, jeลli jest zainstalowany. W tym przypadku wersja to v5.14.2. Ale jeลli nieโฆ nie panikujโฆ
Unix
|
Juลผ zainstalowane Jest fabrycznie zainstalowany w jฤzyku Perl, jednak moลผe byฤ konieczna aktualizacja do najnowszej wersji. |
Mac OS
|
Juลผ zainstalowane OSX ma preinstalowany Perl, chociaลผ moลผe byฤ konieczna jego aktualizacja do najnowszej wersji |
Windows
|
Trzeba zainstalowaฤ Dostฤpne sฤ
dwie opcje
|
Aktualizowanie Perla w systemie Linux:
Jeลli chcesz zaktualizowaฤ wersjฤ Perla, po prostu wpisz jednฤ liniฤ poleceล
sudo apt-get zainstaluj perl
i wyluzuj. Resztฤ siฤ zajmiemy. Upewnij siฤ tylko, ลผe masz aktywne poลฤ czenie z Internetem.


Zainstaluj Perla dla Windows:
Najpierw pobierz z tego aktywnego Perla link. Wykonaj poniลผsze kroki, aby zainstalowaฤ ActivePerl Windows system. Zobacz poniลผsze zrzuty ekranu, aby zobaczyฤ to samo.
Krok 1: Po pobraniu instalatora i rozpoczฤciu instalacji zobaczysz poniลผsze okno. Kliknij Dalej, aby kontynuowaฤ.

Krok 2: Zaakceptuj umowฤ licencyjnฤ , aby kontynuowaฤ instalacjฤ.

Krok 3: Poniลผej znajdujฤ siฤ rรณลผne pakiety, ktรณre zostanฤ zainstalowane. Domyลlnie wybrane zostanฤ wszystkie. Jedynฤ rรณลผnicฤ jest PPM (menedลผer pakietรณw Perla). Jest to narzฤdzie dostarczane przez Active Perl do instalowania zewnฤtrznych moduลรณw lub bibliotek Perla w twoim systemie. Kliknij Dalej, aby kontynuowaฤ.

Krok 4: Sฤ to rรณลผne typy rozszerzeล Perla, ktรณrych moลผna uลผywaฤ w Perlu. Przewaลผnie bฤdziemy uลผywaฤ .Pl, .Plx i .Pm dla Perla. Moduลy Perla zasadniczo uลผywajฤ .Pm jako rozszerzenia pliku w odniesieniu do pliku biblioteki. Zaznacz wszystkie opcje i kliknij przycisk Dalej.

Krok 5: Kliknij przycisk Instaluj, aby kontynuowaฤ instalacjฤ.

Krok 6: Po zainstalowaniu wykonaj polecenie โPerl โvโ, aby sprawdziฤ, czy Perl zostaล pomyลlnie zainstalowany w twoim systemie.

Jest wiele rzeczy, ktรณre naleลผy omรณwiฤ w celu ustawienia ลrodowiska Perla zarรณwno w systemie Linux, jak i Windows, poniewaลผ w tej instalacji nie bฤdzie wielu plikรณw bibliotek. Musisz je zainstalowaฤ rฤcznie. Moลผna je zainstalowaฤ rฤcznie za pomocฤ CPAN (Comprehensive Perl Archive Network) lub PPM, ktรณry dziaลa tylko dla okien Perl. Jednak te pliki nie sฤ obowiฤ zkowe, aby rozpoczฤ ฤ kodowanie w Perl.
Oprรณcz tej konfiguracji systemu Windows moลผesz uลผyฤ Windows Nowa funkcja podsystemu Linux w systemie Windows 10 i moลผliwoลฤ jej wykorzystania do uruchamiania kodu Perl
Pierwszy program w Perlu
Hello world!
Przykลad Perla: Witaj ลwiecie
#!/usr/bin/perl -w #this is just a commentโฆ print "Hello World";
Nie martw siฤ, jeลli nie rozumiesz tego tekstu. Wszystko wkrรณtce siฤ wyjaลni. Chodลบ i spรณjrz na to wedลug linii:
#!/usr/bin/perl
To mรณwi Operating System, aby wykonaล ten plik z programem znajdujฤ cym siฤ w /usr/bin/perl. Niektรณre IDE nie potrzebujฤ tej linii. Jeลli jest to konieczne, musisz wpisaฤ tutaj ลcieลผkฤ do swojego tลumacza. Pamiฤtaฤ! Ta specjalna linia musi znajdowaฤ siฤ na poczฤ tku programu i musi zaczynaฤ siฤ od #! uลผywaj ostrzeลผeล; Jest to kolejne specjalne polecenie, ktรณre kaลผe interpreterowi wyลwietliฤ wszelkie ostrzeลผenia, np. -w, ktรณre globalnie aktywuje ostrzeลผenia.
print "Hello World";
Instrukcja drukowania zapisuje tekst na ekranie. ลrednik na koลcu linii informuje interpretera Perla, ลผe โโinstrukcja zostaลa zakoลczona. Na koลcu kaลผdej instrukcji w kodzie Perla naleลผy umieลciฤ ลrednik. Zwrรณฤ uwagฤ na cudzysลรณw (โ). Jest to konieczne do wydrukowania instrukcji. Zapisz powyลผszy skrypt jako Firstprog.pl
On Windows
Jeลli masz zainstalowany Strawberry, moลผesz po prostu kliknฤ ฤ Uruchom. Moลผesz takลผe uruchomiฤ interfejs wiersza poleceล i napisaฤ na konsoli:
C:\> perl path\firstprog.pl
lub, jeลli na Twojej ลcieลผce nie ma pliku perl.exe:
C:\> c:\perl\bin\perl.exe firstprog.pl
Na Linuksie/Unixie
Wystarczy otworzyฤ terminal i napisaฤ:
perl firstprog.pl
Jeลli nie moลผesz uruchomiฤ programu, upewnij siฤ, ลผe masz uprawnienia do jego uruchomienia. Wpisz w Terminalu:
chmod +x firstprog.pl
Twรณj program jest teraz wykonywalny i gotowy do uruchomienia. Aby wykonaฤ napisz:
./firstprog
Zainstaluj moduลy cpan minus
Moduลy to zestawy kodรณw, ktรณre sลuลผฤ do wykonywania zadaล, ktรณre wykonujฤ typowe operacje w kilku programach. Jeลli uลผywasz moduลรณw perl, nie musisz przepisywaฤ kodรณw, aby wykonaฤ tฤ samฤ operacjฤ. Perl moลผe korzystaฤ z takich zewnฤtrznych bibliotek kodรณw. Jednฤ z najlepszych bibliotek jest CPAN. Skrรณt ten oznacza Comprehensive Perl Archive Network i zawiera ogromnฤ liczbฤ moduลรณw Perl do wykorzystania. Jest to spoลecznoลฤ lub sieฤ duลผej liczby programistรณw, ktรณrzy dostarczajฤ takie moduลy. Instalujฤ c obsลugฤ moduลรณw CPAN w swoim module Perl, moลผesz korzystaฤ z moduลรณw CPAN i uลatwiฤ sobie pracฤ. Wiฤkszoลฤ moduลรณw Perl jest napisana w Perl, niektรณre uลผywajฤ XS (sฤ napisane w C), wiฤc wymagajฤ kompilatora C (ลatwo jest to skonfigurowaฤ โ nie panikuj). Moduลy mogฤ mieฤ zaleลผnoลci od innych moduลรณw (prawie zawsze w CPAN) i nie moลผna ich zainstalowaฤ bez nich (lub bez okreลlonej wersji). Warto dokลadnie przeczytaฤ dokumentacjฤ dotyczฤ cฤ poniลผszych opcji. Wiele moduลรณw w CPAN wymaga teraz najnowszej wersji Perl (wersja 5.8 lub nowsza). Zainstaluj cpanminus skrypt do pobierania, rozpakowywania, budowania i instalowania moduลรณw z CPAN, aby uลatwiฤ instalowanie innych moduลรณw (pรณลบniej nam podziฤkujesz). Aby zainstalowaฤ Aplikacja cpanminus moduลรณw perla, w wierszu poleceล wpisz:
cpan App::cpanminus
cpan App::cpanminus Upewnij siฤ, ลผe masz poลฤ czenie z Internetem podczas pobierania i instalowania moduลรณw Perla.

Teraz zainstaluj dowolny moduล:
cpan โi <Module_Name>.
Zobaczmy przykลad instalacji moduลu File::Data (jest to interfejs umoลผliwiajฤ cy dostฤp do danych pliku).

Zmienna Perla
Teraz porozmawiamy o zmiennych. Moลผesz sobie wyobraziฤ zmienny rodzaj kontenera, ktรณry przechowuje jednฤ lub wiฤcej wartoลci. Po zdefiniowaniu nazwa zmiennej pozostaje taka sama, ale wartoลฤ lub wartoลci zmieniajฤ siฤ w kรณลko.
Istniejฤ 3 typy zmiennych:
Rodzaje zmiennych w Perlu
Najลatwiejsze sฤ skalary i to jest nasz dzisiejszy temat
Zmienna skalarna
Ten typ zmiennej przechowuje pojedynczฤ wartoลฤ.
Jej nazwa zaczyna siฤ od znaku dolara i identyfikatora Perla (to nazwa naszej zmiennej).
Zmienna skalarna w Perlu
Konwencja nazewnictwa
Jeลli znasz inne jฤzyki programowania, wiesz, ลผe istniejฤ pewne zasady dotyczฤ ce nazewnictwa zmiennych. Podobnie Perl ma trzy zasady nazewnictwa skalarรณw.
- Wszystkie nazwy skalarne bฤdฤ zaczynaฤ siฤ od znaku $. ลatwo jest pamiฤtaฤ o poprzedzeniu kaลผdej nazwy znakiem $. Pomyลl o tym jak o $skalarze.
- Podobnie jak PHP. po pierwszym znaku $, ktรณry jest specjalny w Perlu, dozwolone sฤ znaki alfanumeryczne, tj. od a do z, od A do Z i od 0 do 9. Dozwolony jest takลผe znak podkreลlenia. Uลผyj podkreลlenia, aby podzieliฤ nazwy zmiennych na dwa sลowa. โAle pierwszy znak nie moลผe byฤ liczbฤ โ
- Mimo ลผe liczby mogฤ byฤ czฤลciฤ nazwy, nie mogฤ wystฤpowaฤ bezpoลrednio po $. Oznacza to, ลผe pierwszy znak po $ bฤdzie albo alfabetem, albo podkreลleniem. Te pochodzฤ ce z C/C++ tลo powinno byฤ w stanie natychmiast rozpoznaฤ podobieลstwo. Przykลady
Przykลad Perla:
$var; $Var32; $vaRRR43; $name_underscore_23;
Nie sฤ to jednak dozwolone nazwy zmiennych skalarnych.
mohohoh # $ character is missing $ # must be at least one letter $47x # second character must be a letter $variable! # you can't have a ! in a variable name
Ogรณlna zasada mรณwi, ลผe jeลli Perl ma tylko jedno z czegoล, jest to skalar. Skalary moลผna odczytywaฤ z urzฤ dzeล i moลผemy je wykorzystywaฤ w naszych programach.
Dwa typy skalarnych typรณw danych
- Numbers
- Smyczki
Numbers:
W tego typu danych skalarnych moลผemy okreลliฤ:
- liczby caลkowite, po prostu liczby caลkowite, takie jak 2, 0, 534
- liczby zmiennoprzecinkowe, to liczby rzeczywiste, takie jak 3.14, 6.74, 0.333

Uwaga: Generalnie interpreter Perla widzi liczby caลkowite jak liczby zmiennoprzecinkowe. Na przykลad, jeลli napiszesz 2 w swoich programach, Perl zobaczy to jako 2.0000
Literaลy caลkowite:
Skลada siฤ z jednej lub wiฤkszej liczby cyfr, opcjonalnie poprzedzonych plusem lub minusem i zawierajฤ cych podkreลlenia.
Przykลady Perla:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Jak widaฤ โ nie jest to nic specjalnego. Ale uwierz mi, jest to najpopularniejszy rodzaj skalarรณw. Sฤ wszฤdzie.
Literaลy zmiennoprzecinkowe:
Skลada siฤ z cyfr, opcjonalnie minusa, kropki dziesiฤtnej i wykลadnika.
Przykลady Perla:
3.14; 255.000; 3.6e20; # it's 3.6 times 10 to the 20th -3.6e20; # same as above, but negative -3.6e-20; #it's negative 3.6 times 10 to the -20th -3.6E-20; #we also can use E โ this means the same the lowercase version -3.6e-20

Reprezentacja รณsemkowa, szesnastkowa i binarna:
Jest to alternatywa dla systemu dziesiฤtnego. Pozwรณl, ลผe pokaลผฤ ci reprezentacjฤ รณsemkowฤ , szesnastkowฤ i binarnฤ . Krรณtka tabelka przedstawia wszystkie waลผne informacje na temat tych dziwnych stylรณw:
| Reprezentacja | Baza | Kontynuowano |
|---|---|---|
| Oktal | 8 | 0 (zero) |
| Szesnastkowy | 16 | 0x |
| Binarna | 2 | 0b |
Przykลady Perla:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Wszystkie te wartoลci dla Perla oznaczajฤ to samo. Perl nie przechowuje wartoลci w tym samym formacie. Wewnฤtrznie przekonwertuje te wartoลci szesnastkowe, binarne i รณsemkowe na dziesiฤtne.
Przypisanie jest najczฤstszฤ operacjฤ na skalarze i jest bardzo proste. Perl uลผywa do tego znaku rรณwnoลci. Pobiera wartoลฤ wyraลผenia z prawej strony i umieszcza tฤ wartoลฤ w naszej zmiennej.
Spรณjrzmy na przykลady:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Co wiฤcej, do zmiennej moลผesz wstawiฤ nie tylko liczbฤ, ale takลผe wyraลผenie.
$z = 6 + 12 # give $z value of 18
Smyczki
Struny: Jest to rรณwnieลผ bardzo prosty typ skalara.
Maksymalna dลugoลฤ ciฤ gu w Perlu zaleลผy od iloลci pamiฤci, jakฤ posiada komputer. Nie ma ograniczeล co do rozmiaru ciฤ gu, ciฤ gi mogฤ skลadaฤ siฤ z dowolnej liczby znakรณw, symboli lub sลรณw. Najkrรณtszy ciฤ g nie zawiera znakรณw. Najdลuลผszy moลผe zapeลniฤ caลฤ pamiฤฤ systemu. Programy w jฤzyku Perl moลผna pisaฤ w caลoลci przy uลผyciu 7-bitowego zestawu znakรณw ASCII. Perl pozwala takลผe na dodanie dowolnego 8-bitowego lub 16-bitowego zestawu znakรณw, tzw. znaki inne niลผ ASCII w literaลach ลaลcuchowych. Perl dodaล takลผe obsลugฤ Unicode UTF-8.

Podobnie jak w przypadku liczb, istniejฤ dwa rodzaje ciฤ gรณw znakรณw:
- Literaลy ciฤ gu z pojedynczym cudzysลowem
- Double cytuje literaลy ลaลcuchowe
Literaลy ciฤ gu w pojedynczym cudzysลowie
Pojedyncze cudzysลowy sลuลผฤ do ujฤcia danych, ktรณre naleลผy rozumieฤ dosลownie. Krรณtki przykลad i wszystko powinno byฤ jasne:
Przykลady Perla:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
Wyjลcie:
to jest liczba dolarรณw
Tutaj ze wzglฤdu na pojedynczy cudzysลรณw wartoลฤ $num nie zostaลa pobrana, a dosลowne znaki โ$โ, โnโ, โuโ i โmโ sฤ dodawane do wartoลci $txt
Double-cytowane literaลy ciฤ gu
Double cudzysลowy sฤ uลผywane do ujmowania danych, ktรณre muszฤ zostaฤ interpolowane przed przetworzeniem. Oznacza to, ลผe znaki ucieczki i zmienne nie sฤ po prostu dosลownie wstawiane do pรณลบniejszych operacji, ale sฤ oceniane na miejscu. Znaki ucieczki mogฤ byฤ uลผywane do wstawiania nowych linii, tabulatorรณw itp.
Przykลady Perla:
$num = 7; $txt = "it is $num"; print $txt;
Wyjลcie:
to jest 7
Tutaj ze wzglฤdu na podwรณjne cudzysลowy wartoลฤ $num jest dodawana do wartoลci $txt
Double-cudzysลowy interpolujฤ zmienne skalarne i tablicowe, ale nie hasze. Z drugiej strony, moลผesz uลผyฤ cudzysลowรณw, aby interpolowaฤ wycinki zarรณwno tablic, jak i haszy.
Tajemniczy \n
Rozwaลผ nastฤpujฤ cy program
Przykลady Perla:
print "hello \n";
Wyjลcie:
czeลฤ
Perl nie wyลwietla tylko โczeลฤ\nโ, ale tylko โwitajโ. Dlaczego? Poniewaลผ '\n' jest znakiem specjalnym i oznacza, ลผe โโpodczas wyลwietlania tekstu w programie chcesz przejลฤ do nowej linii. wydrukuj โwitaj\n nowฤ liniฤโ; Nastฤpne pytanie โ czy sฤ jakieล inne znaki specjalne? Tak, oni sฤ ! Ale nie martw siฤ โ tylko kilka. Sprawdลบ poniลผszฤ tabelฤ
| Skonstruowaฤ | OPIS |
|---|---|
| \n | Nowa linia |
| \r | powrรณt |
| \t | Zakลadka |
| \f | podawanie ksztaลtowe |
| \b | Backspace |
| \a | dzwon |
| \e | uciec |
| \007 | dowolna รณsemkowa wartoลฤ ASCII (tutaj 007 = dzwonek) |
| \x7f | dowolna wartoลฤ szesnastkowa (tutaj 7f = usuล) |
| \\ | ukoลnik wsteczny |
| \ โ | cudzysลรณw |
| \l | nastฤpna litera z maลej litery |
| \L | maลe litery wszystkie nastฤpujฤ ce po sobie aลผ do \E |
| \u | wielka nastฤpna litera |
| \U | wielkie litery wszystkie nastฤpujฤ ce po sobie aลผ do \E |
| \E | Zakoลcz \L, \U |
Wiem, ลผe nie ma โtylko kilkuโโฆ Ale uwierz mi, musisz to wiedzieฤ
Zmienna ciฤ gรณw
To ta sama operacja, ktรณrฤ widzimy w przypisywaniu liczb. Perl pobiera nasz ciฤ g z prawej strony znaku rรณwnoลci i umieszcza ten ciฤ g w zmiennej.
Przykลady Perla:
$string = 'tutorial'; # give $string the eight-character string 'tutorial' print $string; $string = $size + 3 ; # give $string the current value of $size plus 3 print $string; $string = $ string * 5; # multiplied $string by 5 print $string;
Wyjลcie:
samouczek315
Jak widaฤ, moลผna umieลciฤ liczby i ciฤ gi znakรณw w tych samych zmiennych. Nie ma klasy zmiennych.
ลฤ czenie ciฤ gรณw (kropka):
Operator konkatenacji โ.โ ลฤ czy dwa lub wiฤcej ciฤ gรณw znakรณw. Pamiฤtaj! Jeลli ciฤ g znakรณw zawiera cudzysลowy, znaki powrotu karetki, ukoลniki odwrotne, wszystkie te znaki specjalne muszฤ zostaฤ poprzedzone ukoลnikiem odwrotnym.
Zmienna Perla โโ Przykลady:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Wyjลcie:
Tomek jest ulubionym kotem mamy
Sznurki
โ$aโ, โ$bโ sฤ ลฤ czone i przechowywane w โ$cโ za pomocฤ operatora โ.โ
Na koลcuโฆ
Konwersja pomiฤdzy Numbers i ciฤ gi:
Jak wiesz, Perl automatycznie konwertuje liczby na ciฤ gi znakรณw, gdy jest to potrzebne. Skฤ d Perl wie, czego potrzebujemy w danej chwili? To proste โ wszystko zaleลผy od operatora (pรณลบniej porozmawiamy o operatorach, teraz zaakceptujmy, ลผe jest ich wiele, rรณลผnych dla liczb i ciฤ gรณw znakรณw). Jeลli operator oczekuje liczby, Perl uลผyje wartoลci jako liczby. Jeลli operator oczekuje ciฤ gu znakรณw, Perl uลผyje wartoลci jako ciฤ gu znakรณw. Innymi sลowy โ nie musisz siฤ martwiฤ o tego typu konwersjฤ. Krรณtki przykลad i wszystko powinno byฤ jasne:
Przykลady Perla:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Wyjลcie:
71
wartoลฤ $string jest konwertowana na liczbฤ caลkowitฤ i dodawana do wartoลci $number.
Wynik dodania, 71, jest przypisywany do $result.
Zasiฤg zmiennej โ Modyfikatory dostฤpu
Skalar moลผemy zadeklarowaฤ w dowolnym miejscu programu. Ale musisz okreลliฤ modyfikator dostฤpu
Istniejฤ 3 rodzaje modyfikatorรณw
- my
- miejscowy
- podejลciu,
My: Za pomocฤ tego moลผesz zadeklarowaฤ dowolnฤ zmiennฤ , ktรณra jest specyficzna w bloku. tj. w nawiasach klamrowych.
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
Brak wyjลcia
Wynik programu nie bฤdzie niczym!

W powyลผszym przykลadzie zobaczysz, ลผe zadeklarowano dwie zmienne, jedna znajduje siฤ wewnฤ trz bloku if ($var_2), a druga znajduje siฤ poza blokiem If ($var). Zmienna zadeklarowana poza blokiem bฤdzie dostฤpna dla bloku if, natomiast zmienna zadeklarowana wewnฤ trz bloku if nie bฤdzie dostฤpna dla programu zewnฤtrznego.
Lokalnie: Uลผywajฤ c tego, moลผemy faktycznie zamaskowaฤ te same wartoลci zmiennych do rรณลผnych wartoลci bez faktycznej zmiany pierwotnej wartoลci zmiennej. Zaลรณลผmy, ลผe mamy zmiennฤ $a, ktรณrej wartoลฤ jest przypisana 5. W rzeczywistoลci moลผesz zmieniฤ wartoลฤ tej zmiennej poprzez ponowna deklaracja tej samej zmiennej przy uลผyciu sลowa kluczowego local bez zmiany pierwotnej wartoลci zmiennej, ktรณra wynosi 5. Zobaczmy, jak to dziaลa na przykลadzie.
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
Dane wyjลciowe powyลผszego programu bฤdฤ wyglฤ daฤ w ten sposรณb.
lokalny, $zmienna = 3
globalny, $zmienna = 5
W ten sposรณb moลผemy zmieniฤ wartoลฤ zmiennej bez wpลywu na wartoลฤ pierwotnฤ .
Our: Po zadeklarowaniu zmiennej z modyfikatorem dostฤpu โnaszโ moลผna jej uลผywaฤ w caลym pakiecie. Zaลรณลผmy, ลผe masz moduล Perla lub pakiet test.pm, ktรณry ma zadeklarowanฤ zmiennฤ o zasiฤgu nasz. Dostฤp do tej zmiennej moลผna uzyskaฤ w dowolnym skrypcie, ktรณry bฤdzie korzystaล z tego pakietu.
Jeลli powaลผnie myลlisz o programowaniu w Perlu, powinieneล zaczฤ ฤ swรณj program od
#!/usr/local/bin/perl
uลผywaj ลcisลego;
Pomoลผe Ci to pisaฤ lepszy i czystszy kod. โuลผyj ลcisลegoโ wลฤ cza ลcisลฤ pragmฤ, ktรณra sprawi, ลผe zadeklarujesz zmienne za pomocฤ mojego sลowa kluczowego.
Jest to dobra praktyka programistyczna
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Wynik: bลฤ d
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Wyjลcie:
10
Tablica Perla
Co to jest tablica Perla?
Tablica to specjalny typ zmiennej, ktรณry przechowuje dane w formie listy; do kaลผdego elementu moลผna uzyskaฤ dostฤp za pomocฤ numeru indeksu, ktรณry bฤdzie unikalny dla kaลผdego elementu. W tablicy moลผna przechowywaฤ liczby, ciฤ gi znakรณw, wartoลci zmiennoprzecinkowe itp. Wyglฤ da to ลwietnie. Jak wiฤc utworzyฤ tablicฤ w Perlu? W Perlu moลผna zdefiniowaฤ tablicฤ za pomocฤ znaku โ@โ, po ktรณrym nastฤpuje nazwa, ktรณrฤ chcesz nadaฤ. Rozwaลผmy zdefiniowanie tablicy w Perlu.
moja @tablica;
Oto jak definiujemy tablicฤ w Perlu; byฤ moลผe zastanawiasz siฤ, w jaki sposรณb musimy przechowywaฤ w nim dane. Istniejฤ rรณลผne sposoby przechowywania danych w tablicy. To zaleลผy od tego, jak bฤdziesz go uลผywaฤ.
my @array=(a,b,c,d); print @array;
Wyjลcie:
abcd
To jest tablica zawierajฤ ca 4 elementy.
Indeks tablicy zaczyna siฤ od 0 i koลczy do maksymalnego zadeklarowanego rozmiaru, w tym przypadku maksymalny rozmiar indeksu wynosi 3.
Przykลad tablicy Perla
Moลผesz takลผe zadeklarowaฤ tablicฤ w powyลผszy sposรณb; jedyna rรณลผnica polega na tym, ลผe przechowuje dane w tablicy, uznajฤ c biaลฤ spacjฤ za ogranicznik. Tutaj qw() oznacza sลowo cudzysลowu. Znaczenie tej funkcji polega na wygenerowaniu listy sลรณw. Moลผesz uลผyฤ qw na wiele sposobรณw, aby zadeklarowaฤ tablicฤ.
@array1=qw/a b c d/;
@array2= qw' p q r s';
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;
Wyjลcie:
abcdpqrsvxyz
Zaลรณลผmy, ลผe chcesz przypisaฤ wartoลฤ do 5th element tablicy, jak to zrobimy.
$tablica [4] ='e';
Ukลad sekwencyjny
Tablice sekwencyjne to takie, w ktรณrych przechowujesz dane sekwencyjnie. Zaลรณลผmy, ลผe chcesz przechowywaฤ 1-10 liczb lub liter alfabetu az w tablicy. Zamiast wpisywaฤ wszystkie litery, moลผesz sprรณbowaฤ czegoล takiego jak poniลผej โ
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Wyjลcie:
12345678910
Rozmiar tablicy Perla
Mamy tablicฤ, ktรณra jest juลผ dostฤpna i nie wiesz, jaki jest rozmiar tej tablicy, wiฤc jaki jest moลผliwy sposรณb jej znalezienia.
@array= qw/a b c d e/; print $size=scalar (@array);
Czy moลผemy uzyskaฤ rozmiar tablicy bez uลผycia funkcji? Tak moลผemy.
@array= qw/a b c d e/; print $size=scalar (@array); print "\n"; print $size=$#array + 1; # $#array will print the Max Index of the array, which is 5 in this case
Wyjลcie:
5
5
Tablica dynamiczna
Powyลผsza metoda deklarowania tablicy nazywa siฤ tablice statyczne, gdzie znasz rozmiar tablicy.
Co to jest tablica dynamiczna?
Tablice dynamiczne to te, ktรณre deklarujesz bez podawania ลผadnej wartoลci. Kiedy wiฤc dokลadnie przechowujemy wartoลci w tej tablicy? To proste, przechowujemy je w czasie wykonywania. Oto prosty program do tego.
Do wykonania tego zadania bฤdziemy uลผywaฤ wbudowanych funkcji Perla.
my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \nโ;
# This is a special variable which stores the current value.
}
Wyjลcie:
To jest
rodzaj dynu
mic
rr
y
Funkcja split dzieli zawartoลฤ ciฤ gu na tablicฤ w oparciu o dostarczony ogranicznik. Ta funkcja usunie rรณwnieลผ ogranicznik z ciฤ gu, w tym przypadku jest to โaโ;
Push, Pop, shift, unshift dla tablic Perl:
Tych funkcji moลผna uลผywaฤ w Perlu do dodawania/usuwania elementรณw tablicy.
- Perl Push: dodaje element tablicy na koลcu istniejฤ cej tablicy.
- Perl Pop: usuwa ostatni element z tablicy.
- Perl Shift: usuwa pierwszy element z tablicy.
- Perl Unshift: dodaje element na poczฤ tku tablicy.

Zobaczmy przykลad, w ktรณrym moลผemy skorzystaฤ z poniลผszych funkcji.
@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu"); # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri"); # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n"; # remove one element from the last of an array.
shift(@days); # remove one element from the beginning of an array.
print "5th when shift : @days\n";
Wyjลcie:
1.: pon. wt. ลr
2. po naciลniฤciu: pon. wt. ลr. czw
3. przy zmianie biegรณw: Pt Pon Wt ลr Czw
4. kiedy pop: piฤ tek pon. wt. ลr
5. kiedy zmiana: Pon Wt ลr
Hashe Perla
Dlaczego potrzebujemy Hasha?
O skalarach i tablicach dowiedzieliลmy siฤ juลผ w poprzednich sekcjach.
Co dokลadnie robiฤ skalary? Przechowuje tylko liczby caลkowite i ciฤ gi znakรณw.
Co dokลadnie robiฤ tablice? Jest to zbiรณr skalarรณw, w ktรณrym dostฤp do kaลผdego elementu tablicy moลผna uzyskaฤ za pomocฤ indeksรณw. Ale czy dobrym pomysลem jest uลผycie tablicy, gdy masz setki i tysiฤ ce rekordรณw? Zapomnimy, ktรณry indeks ma jakฤ wartoลฤ. Aby przezwyciฤลผyฤ tฤ sytuacjฤ, mamy coล w rodzaju skrรณtu Perla.
Co to sฤ hashe?
Hash moลผe rรณwnieลผ zawieraฤ tyle skalarรณw, ile moลผe pomieลciฤ tablica. Jedyna rรณลผnica polega na tym, ลผe nie mamy ลผadnego indeksu, mamy raczej klucze i wartoลci. Moลผna zadeklarowaฤ skrรณt, zaczynajฤ c od %, po ktรณrym nastฤpuje nazwa skrรณtu. Zobaczmy przykลad, jak moลผemy zdefiniowaฤ hash Perla i jak moลผemy odrรณลผniฤ go od tablicy
Rozwaลผmy przykลad trzech osรณb, a ich wiek przedstawiono w tablicy.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
Wyjลcie:
Sainath33Krishna24ลruti25
W ten sposรณb trudno jest okreลliฤ wiek poszczegรณlnych osรณb, gdyลผ musimy pamiฤtaฤ zarรณwno lokalizacjฤ indeksu imion, jak i wiek wszystkich osรณb. Moลผe to byฤ proste, gdy masz 3 nazwiska, ale gdy masz 1000 lub wiฤcej? Znasz odpowiedลบ.

Moลผemy to pokonaฤ za pomocฤ skrรณtu.
Przykลad skrรณtu:
print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.
Wyjลcie:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25
Zadeklarowaliลmy teraz skrรณt, ลwietnie!! Ale jak uzyskaฤ do niego dostฤp lub go wydrukowaฤ? Do kaลผdego elementu w haszu naleลผy uzyskaฤ dostฤp za pomocฤ powiฤ zanego z nim klucza, do ktรณrego zostanie przypisana wartoลฤ. Zatem istnieje odwzorowanie typu โjeden jedenโ pomiฤdzy kaลผdym kluczem i wartoลciฤ w haszu.
Aby wydrukowaฤ wiek dowolnej osoby, wystarczy zapamiฤtaฤ imiฤ tej osoby.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Byฤ moลผe zastanawiaลeล siฤ, dlaczego uลผyลem $hash{KeyName}, pamiฤtaj, ลผe hash to znowu zbiรณr skalarรณw. Moลผemy wiฤc uลผyฤ $, ktรณry reprezentuje skalar, aby uzyskaฤ dostฤp do kaลผdego elementu skrรณtu.

Uwaga: kaลผdy klucz w hashu powinien byฤ unikalny, w przeciwnym razie nadpisze twojฤ wartoลฤ, ktรณra zostaลa wczeลniej przypisana.
Jak moลผemy przypisaฤ skrรณt do innego skrรณtu? Prosty, taki sam sposรณb jak my
Moลผemy rรณwnieลผ wydrukowaฤ caลy skrรณt.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Wyjลcie:
Tom23
Dodaj skrรณty Perla
Jak widaฤ, mamy juลผ hash %newHash, a teraz musimy dodaฤ do niego wiฤcej wpisรณw.
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
Wyjลcie:
Jim25John26Harry27
Perl Usuล klucz
Moลผesz chcieฤ usunฤ ฤ wpis ze skrรณtu. W ten sposรณb moลผemy to zrobiฤ.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Usuล jest wbudowanฤ funkcjฤ Perla. Tutaj zobaczymy przykลad przypisania skrรณtu do tablicy.
@array=%newHash; print "@array";
Uwaga: za kaลผdym razem, gdy drukujesz skrรณt lub przechowujesz skrรณt w tablicy. Kolejnoลฤ zawsze moลผe siฤ rรณลผniฤ. Nie zawsze jest tak samo.
Do tablicy moลผemy przypisaฤ tylko klucze lub wartoลci skrรณtu.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
Aby usunฤ ฤ wszystkie wpisy w hashu, moลผemy bezpoลrednio przypisaฤ hash do wartoลci null.
%newHash=();# Spowoduje to przedefiniowanie skrรณtu bez wpisรณw.
Instrukcje warunkowe Perla
W Perlu moลผemy uลผywaฤ instrukcji warunkowych. Czym zatem sฤ instrukcje warunkowe? Instrukcje warunkowe to takie, w przypadku ktรณrych faktycznie sprawdzasz, czy w kodzie sฤ speลnione pewne okolicznoลci.
Pomyลl o przykลadzie: kupujesz owoce i nie podoba Ci siฤ cena przekraczajฤ ca 100 dolarรณw. Zatem tutaj obowiฤ zuje zasada 100 dolcรณw.
Perl obsลuguje dwa typy instrukcji warunkowych; sฤ jeลli i chyba ลผe.
Perl Jeลli
Jeลli zostanie wykonany blok kodu, gdy warunek jest speลniony.

my $a=5;
if($a==5)
{
print "The value is $a";
}
Wyjลcie:
5
Perl, jeลli jest inaczej
To wyglฤ da dobrze. Pomyลlmy o sytuacji, w ktรณrej $a nie wynosi 5.
my $a=10;
if($a==5)
{
print "The values is $a ---PASS";
}
else
{
print "The value is $a ---FAIL";
}
Wyjลcie:
Wartoลฤ wynosi 10 โ FAIL
W ten sposรณb moลผemy kontrolowaฤ tylko jeden warunek na raz. Czy to ograniczenie? Nie, moลผesz takลผe kontrolowaฤ rรณลผne warunki za pomocฤ ifโฆ elsifโฆ else.
Perl Inaczej jeลli
my $a=5;
if($a==6)
{
print "Executed If block -- The value is $a";
}
elsif($a==5)
{
print "Executed elsif block --The value is $a";
}
else
{
print "Executed else block โ The value is $a";
}
Wyjลcie:
Wykonany blok elsif โ wartoลฤ wynosi 5
W powyลผszym przypadku blok elsif zostanie wykonany, poniewaลผ $a jest rรณwne 5.
Mogฤ zaistnieฤ sytuacje, w ktรณrych zawiodฤ zarรณwno bloki kodu if, jak i elsif. W tym scenariuszu zostanie wykonany blok kodu else. W rzeczywistoลci moลผesz wyeliminowaฤ sprawdzanie kodu else, jeลli nie chcesz go doลฤ czaฤ.
Perl zagnieลผdลผony jeลli
W takim przypadku moลผesz uลผyฤ bloku kodu if w jeszcze jednym bloku kodu if.
my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
print "Inside 1st if block";
if($a<5){
print "Inside 2nd if block --- The value is $a";
}
else{
print " Inside 2nd else block --- The value is $a";
}
}
else{
print "Inside 1st else block โ The value is $a";
}
Wyjลcie:
Wewnฤ trz pierwszego bloku else โ wartoลฤ wynosi 1
Wykonaj ten sam kod, zmieniajฤ c wartoลฤ $a; reszty moลผesz siฤ dowiedzieฤ.
Perl Chyba, ลผe
Masz juลผ pomysล, co siฤ stanie, jeลli (jeลli warunek jest prawdziwy, wykona blok kodu). Chyba ลผe jest przeciwieลstwem if, chyba ลผe blok kodu zostanie wykonany, jeลli warunek jest faลszywy.
my $a=5;
unless($a==5)
{
print "Inside the unless block --- The value is $a";
}
else
{
print "Inside else block--- The value is $a";
}
Wyjลcie:
Wewnฤ trz pierwszego bloku else โ wartoลฤ wynosi 1
Zgadnij, jaki bฤdzie wynik. Masz racjฤ!!!!!. Wynikiem bฤdzie instrukcja print bloku else. Ze wzglฤdu na warunek w chyba, ลผe โโblok kodu jest prawdziwy, pamiฤtaj, ลผe blok chyba nie zostanie wykonany tylko wtedy, gdy warunek jest faลszywy. Zmieล wartoลฤ $a i wykonaj kod, zobaczysz rรณลผnicฤ.
Perl Uลผywanie if
$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}
Wyjลcie:
Wewnฤ trz innego bloku
Uลผywanie, chyba ลผe
$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}
Wyjลcie:
Wewnฤ trz, chyba ลผe Block
Pฤtle Perla โ Struktury sterujฤ ce
Perl obsลuguje struktury kontrolne podobne do innych jฤzykรณw programowania. Perl obsลuguje cztery typy struktur kontrolnych for, fore, while i Until. Uลผywamy tych instrukcji do wielokrotnego wykonywania jakiegoล kodu.
Dla pฤtli Perl
Dla bloku kodu bฤdzie wykonywany dopรณki warunek nie zostanie speลniony. Weลบmy przykลad, jak Perl zapฤtla tablicฤ.
my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
print "The array index $count value is $array[$count]";
print "\n";
}
Wyjลcie:
Wartoลฤ indeksu tablicy 0 wynosi 1
Wartoลฤ indeksu tablicy 1 wynosi 2
Wartoลฤ indeksu tablicy 2 wynosi 3
Wartoลฤ indeksu tablicy 3 wynosi 4
Wartoลฤ indeksu tablicy 4 wynosi 5
Wartoลฤ indeksu tablicy 5 wynosi 6
Wartoลฤ indeksu tablicy 6 wynosi 7
Wartoลฤ indeksu tablicy 7 wynosi 8
Wartoลฤ indeksu tablicy 8 wynosi 9
Wartoลฤ indeksu tablicy 9 wynosi 10
Tutaj, w wyraลผeniu for (), zawartych jest wiele instrukcji. Kaลผde z nich ma swoje znaczenie.
for (inicjalizacja; warunek; inkrementacja)
Oto inny sposรณb uลผycia for.
for(1..10)
{
print "$_ n";
print "\n";
}
Wyjลcie:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
Instrukcja for each moลผe byฤ uลผywana w taki sam sposรณb jak for; gลรณwna rรณลผnica polega na tym, ลผe nie mamy w tym przypadku ลผadnej kontroli stanu ani inkrementacji.
Weลบmy ten sam przykลad z foreach Perl.
my @array=(1..10);
foreach my $value (@array)
{
print " The value is $value\n";
}
Wyjลcie:
Wartoลฤ wynosi 1
Wartoลฤ wynosi 2
Wartoลฤ wynosi 3
Wartoลฤ wynosi 4
Wartoลฤ wynosi 5
Wartoลฤ wynosi 6
Wartoลฤ wynosi 7
Wartoลฤ wynosi 8
Wartoลฤ wynosi 9
Wartoลฤ wynosi 10
Foreach pobiera kaลผdy element tablicy i przypisuje tฤ wartoลฤ do $var przy kaลผdej iteracji. Moลผemy rรณwnieลผ uลผyฤ $_ do tego samego.
my @array=(1..10);
foreach(@array)
{
print " The value is $_ \n"; # This is same as the above code.
}
Wyjลcie:
Wartoลฤ wynosi 1
Wartoลฤ wynosi 2
Wartoลฤ wynosi 3
Wartoลฤ wynosi 4
Wartoลฤ wynosi 5
Wartoลฤ wynosi 6
Wartoลฤ wynosi 7
Wartoลฤ wynosi 8
Wartoลฤ wynosi 9
Wartoลฤ wynosi 10
Wyglฤ da to dobrze w przypadku dostฤpu do tablic. A co z hashami, jak moลผemy uzyskaฤ klucze skrรณtu i โโwartoลci za pomocฤ foreach?
Moลผemy uลผyฤ foreach, aby uzyskaฤ dostฤp do kluczy i wartoลci skrรณtu, zapฤtlajฤ c go.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}
Wyjลcie:
Mickey
Tomek
Nocnik
Byฤ moลผe zastanawiasz siฤ, dlaczego uลผyliลmy klawiszy w funkcji foreach(). Klucze to wbudowana funkcja Perla, dziฤki ktรณrej moลผemy szybko uzyskaฤ dostฤp do kluczy skrรณtu. A co z wartoลciami? Moลผemy uลผyฤ funkcji wartoลci, aby uzyskaฤ dostฤp do wartoลci skrรณtu.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
print " the value is $value \n";
}
Wyjลcie:
wartoลฤ wynosi 24
wartoลฤ wynosi 23
wartoลฤ wynosi 25
Perl Podczas
Pฤtla While w Perlu jest strukturฤ kontrolnฤ , w ktรณrej blok kodu bฤdzie wykonywany, dopรณki warunek nie zostanie speลniony.
Blok kodu zakoลczy dziaลanie tylko wtedy, gdy warunek bฤdzie faลszywy.
Weลบmy przykลad pฤtli Perl While.

Oto problem, ktรณry bฤdzie wymagaล wprowadzenia danych przez uลผytkownika i nie zakoลczy siฤ, dopรณki liczba nie zostanie podana jako โ7โ.
#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
print "Guess a Number Between 1 and 10 \n ";
$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"
Wyjลcie:
Odgadnij liczbฤ od 1 do 10
9
Odgadnij liczbฤ od 1 do 10
5
Odgadnij liczbฤ od 1 do 10
7
Zgadลeล szczฤลliwฤ liczbฤ 7
W powyลผszym przykลadzie warunek while nie bฤdzie speลniony, jeลผeli wprowadzimy dane inne niลผ '7'.
Jeลli zobaczysz, jak dziaลa while, blok kodu zostanie wykonany tylko wtedy, gdy warunek za chwilฤ bฤdzie prawdziwy.
Perl do-while
Pฤtla Do while wykona siฤ co najmniej raz, nawet jeลli warunek w sekcji while jest faลszywy.
Weลบmy ten sam przykลad, uลผywajฤ c do while.
$guru99 = 10;
do {
print "$guru99 \n";
$guru99--;
}
while ($guru99 >= 1);
print "Now value is less than 1";
Wyjลcie:
10
9
8
7
6
5
4
3
2
1
Teraz wartoลฤ jest mniejsza niลผ 1
Perล do
Dopรณki blok kodu nie jest podobny do chyba w instrukcji warunkowej. W tym przypadku blok kodu zostanie wykonany tylko wtedy, gdy warunek w bloku dopรณki nie bฤdzie faลszywy.
Weลบmy ten sam przykลad, ktรณrego uลผyliลmy w przypadku chwilฤ.
Oto problem, ktรณry bฤdzie wymagaล wprowadzenia danych przez uลผytkownika i nie zakoลczy siฤ, dopรณki nie zostanie podana nazwa inna niลผ โsaiโ.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
until($name ne 'sai')
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}
Wyjลcie:
Wpisz dowolnฤ nazwฤ Sai
Perl do-aลผ:
Funkcji Do Until moลผna uลผyฤ tylko wtedy, gdy warunek ma byฤ faลszywy i powinien zostaฤ wykonany co najmniej raz.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
do
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}until($name ne 'sai');
Wyjลcie:
Wpisz dowolne imiฤ Howard
Wpisz dowolne imiฤ Sheldon
Wpisz dowolnฤ nazwฤ Sai
Wykonaj przykลadowe kody while, do-while, before i do-until, aby zobaczyฤ rรณลผnicฤ.
Perl OperaTor
Czym jest Operasลup?
Operatory w jฤzyku komputerowym oznaczajฤ akcjฤ, ktรณrฤ moลผna wykonaฤ na pewnym zestawie zmiennych lub wartoลciach zrozumiaลych dla komputera. Perl wลฤ czyล wiฤkszoลฤ Operators z jฤzyka C. Perl ma wiele operatorรณw w porรณwnaniu z innymi jฤzykami programowania. OperaOperatory te dzielimy na operatory arytmetyczne, logiczne, relacyjne i przypisania.
Arytmetyka Operatory:
Operatorzy arytmetyczni to operatory, ktรณrych moลผna uลผywaฤ do wykonywania podstawowych operacji matematycznych. Te operatory arytmetyczne to operatory binarne, w przypadku ktรณrych potrzebujemy dwรณch argumentรณw, aby wykonaฤ podstawowฤ operacjฤ. Moลผemy rรณwnieลผ uลผywaฤ operatorรณw jednoargumentowych do innych podstawowych operacji; rรณลผnicฤ moลผna zobaczyฤ w poniลผszych przykลadach.
| OperaTor | OPIS | Przykลad |
|---|---|---|
|
+ |
Operacja dodawania sลuลผฤ ca do dodawania dwรณch wartoลci lub zmiennych trzymajฤ c wartoลci |
$x=5+6; # Lub $y=6; $z=$x+$y; |
|
- |
Operator odejmowania uลผywany do odejmowania dwรณch wartoลci lub zmiennych zawierajฤ cych wartoลci |
$x=6-5; # Lub $y=6; $z=$x-$y; |
|
* |
Operator mnoลผenia uลผywany do mnoลผenia dwรณch wartoลci lub zmiennych zawierajฤ cych wartoลci |
$x=6*5; # Lub $y=6; $z=$x*$y; |
|
/ |
Operator dzielenia uลผywany do dzielenia dwรณch wartoลci lub zmiennych zawierajฤ cych wartoลci |
$x=36/6; # Lub $y=6; $z=$x/$y; |
|
** |
Operator wykลadniczy uลผywany do podania wykลadnika i pobrania jego wartoลci. Np.: 22 = 43 = 27 |
$x=5**5; # Lub $x=4; $y=2; $z=$x**$y; |
|
% |
Operator modulo uลผywany do uzyskania przypomnienia podczas dzielenia dwรณch wartoลci lub zmiennych zawierajฤ cych wartoลci |
$x=5%2; # Lub $x=10; $y=2; $z=$x% $y; |
|
++ |
Operator dodawania unarnego zwiฤkszajฤ cy wartoลฤ zmiennej o 1 |
$x=5; $x++; Or ++$x; |
|
- |
Operator odejmowania unarnego zmniejszajฤ cy wartoลฤ zmiennej o 1 |
$x=5; $xโ; # zmniejszenie liczby postรณw Or โ$x;# wstฤpne zmniejszenie |
Przykลad wykonania wszystkich powyลผszych operacji.
my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");
Wyjลcie:
Dodanie 10 i 2 daje 12
Pod liczbฤ 10 i 2 jest 8
Mul 10 i 2 rรณwna siฤ 20
Dzielnik 10 i 2 rรณwna siฤ 5
Exp 10 i 2 to 100
Mod 10 i 2 to 0
Cesja Operatory:
Operatorzy przypisania po prostu przypisujฤ wartoลci zmiennym, ale jest jeszcze jedna rzecz, o ktรณrej musimy pamiฤtaฤ โ operatorzy przypisania wykonujฤ rรณwnieลผ operacje arytmetyczne i przypisujฤ nowฤ wartoลฤ tej samej zmiennej, na ktรณrej przeprowadzana jest operacja.
| OperaTor | OPIS | Przykลad |
|---|---|---|
|
+= |
Operator dodawania sลuลผฤ cy do dodawania i przypisywania wartoลci tej samej zmiennej |
$x=4; $x+=10; |
|
-= |
Operator odejmowania sลuลผฤ cy do odejmowania i przypisywania wartoลci tej samej zmiennej |
$x=4; $x-=10; |
|
*= |
Operator mnoลผenia sลuลผฤ cy do dodawania i przypisywania wartoลci tej samej zmiennej |
$x=4; $x*=10; |
|
/= |
Operator dzielenia uลผywany do dzielenia i przypisywania wartoลci tej samej zmiennej |
$x=4; $x/=10; |
|
** = |
Operator wykลadniczy uลผywany do uzyskania wykลadnika i przypisania wartoลci do tej samej zmiennej |
$x=4; $x**=10; |
|
%= |
Operator modulo uลผywany do uzyskania przypomnienia podczas dzielenia i przypisania wartoลci do tej samej zmiennej |
$x=10; $x%=4; |
Przykลad wykonania wszystkich powyลผszych operacji.
my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");
Wyjลcie:
Dodaj = 15
Sub= 10
Mul = 50
Dziaล = 10
Logiczne i relacyjne Operatory:
Perl uลผywa operatorรณw logicznych do porรณwnywania liczb i ciฤ gรณw znakรณw. Najczฤลciej operatory logiczne sฤ uลผywane w instrukcjach warunkowych.
Logiczne i relacyjne Operatory w Perlu
| OperaTor | OPIS |
|---|---|
|
==lub rรณwn |
OperaTor sลuลผy do sprawdzania, czy obie zmienne sฤ rรณwne |
|
!=Albo nie |
OperaTor sลuลผy do sprawdzania, czy obie zmienne nie sฤ rรณwne |
|
> lub gt |
OperaTor uลผywany do sprawdzania, czy A jest wiฤksze niลผ B |
|
<or lt |
OperaTor uลผywany do sprawdzania, czy A jest mniejsze niลผ B. |
|
>=lub ge |
OperaTor uลผywany do sprawdzania, czy A jest wiฤksze lub rรณwne B |
|
<=lub le |
OperaTor uลผywany do sprawdzania, czy A jest mniejsze lub rรณwne B |
|
|| albo albo |
OperaTor uลผywany do sprawdzania, czy A lub B trzyma wartoลฤ |
|
&&albo i |
OperaTor uลผywany do sprawdzania, czy A i B trzymajฤ wartoลฤ |
Weลบmy przykลad, w ktรณrym moลผemy wyjaลniฤ wszystkie scenariusze.
my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
Wyjลcie:
Prawda โ rรณwna siฤ 5 i 5
Prawda โ nie rรณwna siฤ 6 i 7
To prawda โ 7 jest wiฤksze niลผ 6
To prawda โ 6 mniej niลผ 7
To prawda โ 6 mniej niลผ 7
To prawda โ 7 jest wiฤksze niลผ 6
Przykลady operatorรณw logicznych moลผna znaleลบฤ w dalszych sekcjach.
Specjalne zmienne Perla
Co to sฤ zmienne specjalne Perla?
Zmienne specjalne w Perlu to te, ktรณre majฤ pewne z gรณry okreลlone znaczenie. Zmienne te sฤ oznaczone prawdziwymi nazwami lub symbolami interpunkcyjnymi. Mamy specjalnฤ zmiennฤ dla wszystkich zmiennych obsลugiwanych przez Perl, takฤ jak specjalne zmienne skalarne, specjalne zmienne Array, specjalne zmienne mieszajฤ ce. Wiฤkszoลฤ zmiennych specjalnych, ktรณrych uลผywamy, ma charakter skalarny.
Kiedy chcemy uลผyฤ specjalnej zmiennej z jej nazwฤ , musimy zaลadowaฤ moduล Perla โuse Englishโ, aby wyraลบnie powiedzieฤ interpreterowi Perla, ลผe โโbฤdziemy uลผywaฤ specjalnych zmiennych, uลผywajฤ c jej nazwy.
Skalarne zmienne specjalne
| Zmienna | OPIS |
|---|---|
|
$_$ARG |
Jest to domyลlna zmienna przechowujฤ ca bieลผฤ ce wartoลci. |
|
0 USD lub $PROGRAM_NAME |
Przechowuje nazwฤ pliku skryptu Perla. |
|
$/ |
Separator rekordรณw wejลciowych, ma domyลlnฤ wartoลฤ โ\nโ, ktรณra jest znakiem nowej linii |
|
$. |
Przechowuje bieลผฤ cy numer linii odczytywanego pliku |
|
$, |
Separator pola wyjลciowego, uลผywany gลรณwnie przez instrukcjฤ print(). Domyลlnie wartoลฤ tej zmiennej jest ustawiona na 0, moลผemy zmieniฤ wartoลฤ tej zmiennej. |
|
$\ |
Wyprowadลบ separator rekordรณw, wartoลฤ tej zmiennej bฤdzie pusta; moลผemy do tego przypisaฤ dowolnฤ wartoลฤ, ktรณra bฤdzie uลผywana przez instrukcjฤ print() podczas drukowania wyniku. |
|
$# |
Ta zmienna jest uลผywana do okreลlenia formatu wyjลciowego podczas drukowania liczb. |
|
$%$FORMAT_PAGE_NUMBER |
Przechowuje bieลผฤ cy numer strony przeczytanego pliku. |
|
$=$FORMAT_LINES_PER_PAGE |
Zatrzyma bieลผฤ cฤ dลugoลฤ strony odczytanego pliku. |
|
$-$FORMAT_LINES_LEFT |
Przechowuje wartoลฤ liczby wierszy pozostaลych do wydrukowania ze strony. |
|
$~$FORMAT_NAME |
Nazwa formatu: Domyลlnie przechowuje format aktualnie wybranego wyjลcia jako nazwฤ uchwytu pliku. |
|
$^$FORMAT_TOP_NAME |
Przechowuje wartoลฤ formatu nagลรณwka procedury obsลugi pliku, domyลlnie wartoลciฤ bฤdzie _TOP, po ktรณrej nastฤpuje nazwa uchwytu pliku. |
|
$|$WYJลCIE_AUTOFLUSH |
Wartoลฤ domyลlna wynosi zero; sลuลผy ona do oprรณลผniania bufora wyjลciowego po kaลผdym zapisie (write) lub wydruku (print). |
|
$$ |
Bฤdzie przechowywaฤ numer uruchomionego procesu interpretera Perla. |
|
$? |
Kod stanu: Potok i wywoลanie systemowe. Status powrotu wykonanego polecenia. |
|
DOPASOWANIE $&$ |
Uลผywany w wyraลผeniach regularnych, przechowuje ciฤ g ostatniego pomyลlnego dopasowania wzorca. |
|
$`$PREMEC |
Uลผywane w wyraลผeniach regularnych, przechowuje ciฤ g znakรณw poprzedzony ostatnim pomyลlnym dopasowaniem wzorca. |
|
$'$POMECZ |
Uลผywane w wyraลผeniach regularnych, przechowuje ciฤ g znakรณw, po ktรณrym nastฤpuje ostatnie pomyลlne dopasowanie wzorca. |
|
$+$LAST_PAREN_MATCH |
Przechowuje ciฤ g ostatniego nawiasu pasujฤ cego podczas ostatniego wyszukiwania wzorca. |
|
$ |
1 dolar, 2 dolar, 3 dolaryโฆ. Przechowuje wartoลci wzorca dopasowanego w kolejnoลci. |
|
$[ |
Pierwszy indeks: Array, podciฤ g. |
|
$] |
Wersja Perla. |
|
$โ |
Separator uลผywany dla elementรณw listy, domyลlnie jest to spacja. |
|
$; |
Separator indeksu dolnego uลผywany w tablicach wielowymiarowych |
|
$! |
W kontekลcie numerycznym drukuje numer bลฤdu. W kontekลcie ciฤ gu znakรณw wypisz bลฤ d. |
|
$@ |
Przechowuje informacje o bลฤdach skลadniowych, uลผywane podczas uลผywania funkcji eval(). |
|
$< |
Przechowuje prawdziwy UID (identyfikator uลผytkownika) procesu uruchamiajฤ cego skrypt. |
|
$> |
Przechowuje efektywny UID procesu uruchamiajฤ cego skrypt. |
|
$( |
Przechowuje prawdziwy GID (identyfikator grupy) procesu uruchamiajฤ cego skrypt. |
|
$) |
Przechowuje efektywny GID procesu uruchamiajฤ cego skrypt. |
|
$^D$DEBUGOWANIE |
Przechowuje bieลผฤ cฤ wartoลฤ flag debugowania. |
|
$^C |
Przechowuje bieลผฤ cฤ wartoลฤ flagi, gdy uลผywany jest przeลฤ cznik wiersza poleceล โc. |
|
$^F |
Maksymalny deskryptor pliku systemowego domyลlnie jest ustawiony na 2 |
|
$^I$INPLACE_EDIT |
Przechowuje wartoลฤ โi przeลฤ cznika wiersza poleceล. |
|
$^M |
Specjalnej puli pamiฤci moลผna uลผyฤ, gdy skrypt Perla umiera z powodu bลฤdu braku pamiฤci. |
|
$^O$OSNAZWA |
OperaInformacje o systemie sฤ przechowywane. โLinuxโ dla systemรณw Linux, โmswin32โ dla Windows systemy. |
|
$^T$CZAS PODSTAWOWY |
Czas dziaลania skryptรณw w sekundach. |
|
$^W$OSTRZEลปENIE |
Bieลผฤ ca wartoลฤ przeลฤ cznika โw wiersza poleceล. Przeลฤ cznik ostrzegawczy. |
|
$ARGV |
Nazwa bieลผฤ cego pliku, jeลli uลผyto <>. |
Specjalne zmienne tablicowe:
| Zmienna | OPIS |
|---|---|
|
@INC |
Przechowuje listฤ ลcieลผek, gdzie moลผna przeglฤ daฤ moduลy biblioteki Perla lub skrypty podczas wykonywania bieลผฤ cego skryptu. To @INC jest uลผywane przez uลผycie i wymaga instrukcji sprawdzajฤ cych te ลcieลผki dla moduลรณw bibliotecznych. |
|
@agawa |
Przechowuje przekazane argumenty wiersza poleceล. |
|
@_ |
Stosowany w podprogramach, podczas przekazywania parametrรณw do podprogramรณw. |
|
@F |
Jest to tablica, w ktรณrej przechowywane sฤ linie wejลciowe podczas automatycznego podziaลu โa (uลผywany jest przeลฤ cznik wiersza poleceล). |
Hashowe zmienne specjalne:
| Zmienna | OPIS |
|---|---|
|
%INC |
Nazwa pliku bฤdzie kluczem; wartoลci bฤdฤ ลcieลผkฤ do tych plikรณw. Uลผywane przez do, use i require. |
|
%ENW |
Zmienne ลrodowiskowe systemu. |
|
%SYG |
Signalopiekun. |
Wyraลผenie regularne Perla
Co to jest wyraลผenie regularne?
Wyraลผenie regularne Perla jest wystarczajฤ co silne, aby dopasowaฤ wzorce ciฤ gu w obrฤbie instrukcji lub grupy instrukcji. Wyraลผenia regularne sฤ najczฤลciej uลผywane w analizie tekstu, dopasowywaniu wzorcรณw i wielu innych czynnoลciach w zaleลผnoลci od wymagaล. Mamy pewne operatory, ktรณre sฤ specjalnie uลผywane przez wiฤ zanie wzorcรณw wyraลผeล regularnych =~ i !~, Sฤ to operatory testowe i przypisania.
Wyraลผenie regularne Operatorsy
Wyraลผenie regularne Operatory w Perlu
- Perลowy mecz โ m//
- Substytut Perla โ s///
- Transliteracja Perla โ tr///
Zanim przejdziemy dalej, musimy wiedzieฤ kilka rzeczy o wyraลผeniach regularnych; istniejฤ pewne rzeczy, takie jak znaki Meta, symbole wieloznaczne w skลadni Perl Regex.
| Zwฤglaฤ | Znaczenie |
|---|---|
|
\ |
Specjalne lub cytat |
|
* |
Dopasuj 0 lub wiฤcej znakรณw |
|
+ |
Dopasuj 1 lub wiฤcej znakรณw |
|
? |
Dopasuj 0 lub 1 znak |
|
| |
Moลผna go wykorzystaฤ do dopasowania alternatywnych wzorรณw |
|
() |
Sลuลผy do przechowywania dopasowanego wzoru |
|
[] |
Moลผna przekazaฤ zestaw znakรณw. Stosowany szczegรณlnie do cyfr i alfabetรณw. |
|
{} |
Sลuลผy do podawania liczby czasu, przez jaki moลผna przeprowadziฤ mecz. |
|
^ |
Poczฤ tek ciฤ gu |
|
$ |
Koniec sznurka |
|
\w |
Sลuลผy do dopasowywania pojedynczego znaku lub sลowa, ktรณre moลผe byฤ alfanumeryczne, w tym โ_โ |
|
\W |
Dopasowuje wszystko inne niลผ alfanumeryczne |
|
\s |
Sลuลผy do dopasowywania biaลych znakรณw |
|
\S |
Dopasowuje wszystko inne niลผ biaลe znaki |
|
\d |
Dopasuj liczby. Nie wartoลci dziesiฤtne i wartoลci ujemne |
|
\D |
Dopasuj wszystko oprรณcz liczb. |
|
\t |
Dopasuj przestrzeล tabulacji |
|
\n |
Dopasuj nowฤ liniฤ |
Powyลผszy zestaw znakรณw moลผe zostaฤ uลผyty podczas dopasowywania wzorca.
Zobaczmy kilka przykลadรณw.
Rozwaลผmy sytuacjฤ, w ktรณrej uลผytkownik wprowadza jakieล dane podczas wykonywania skryptu i chcemy sprawdziฤ, czy uลผytkownik wprowadziล jakฤ ล nazwฤ jako dane wejลciowe, czy nie. Musimy napisaฤ skลadniฤ wyraลผenia regularnego, aby wyodrฤbniฤ Twoje imiฤ i nazwisko i wydrukowaฤ je.
my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
print "Found Pattern";
}
else
{
print "unable to find the pattern";
}
Wyjลcie:
Znaleziono wzรณr
Tutaj zapisaliลmy wyraลผenie regularne jako /.*(Guru99).*/.* dopasowuje wszystkie znaki w ciฤ gu. A '.' w Perlu dopasowanie regularne odnosi siฤ do dowolnego znaku, ลฤ cznie ze spacjฤ .
Zobaczmy, jak dokลadnie moลผemy skonstruowaฤ wyraลผenie regularne.
Rozwaลผmy przykลad ciฤ gu wielu sลรณw i cyfr oraz symboli specjalnych, takich jak ten โWitam wszystkich, to jest mรณj numer: +91-99298373639โ;
Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
spacja sลowa spacja sลowa spacja sลowa spacja sลowa spacja sลowa spacja znak specjalny : spacja znak specjalny+cyfry znak specjalny โcyfry.
Mecz Perla Operatorsy
Operatory dopasowania sลuลผฤ do dopasowania ciฤ gu znakรณw w obrฤbie pewnego polecenia lub zmiennej.
my $var="Hello this is perl";
if($var=~m/perl/)
{
print "true";
}
else
{
print "False";
}
Wyjลcie:
prawdziwy
Ten maลy kod wydrukuje 'true', poniewaลผ dopasowanie wzorca perl identyfikuje ciฤ g w zmiennej. Zasadniczo Perl przeszukuje tekst podany w // w caลym ciฤ gu, nawet jeลli znajdzie go w jednym miejscu, zwrรณci 'true'. Wzorzec moลผe znajdowaฤ siฤ w dowolnym miejscu zmiennej. Moลผemy sprรณbowaฤ zastฤ piฤ =~ przez !~, aby zobaczyฤ rรณลผnicฤ miฤdzy tymi dwoma operatorami.
Substytucja Perla OperaTor
Tego operatora moลผna uลผywaฤ do wyszukiwania i zastฤpowania dowolnego znaku znakiem null lub innym znakiem.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Wyjลcie:
wiolonczela, jak siฤ masz
Uwaga: Moลผemy uลผyฤ dowolnego ciฤ gu dopasowania wzorca, tak jak zrobiliลmy to wczeลniej w tym operatorze podstawiania. Tutaj uลผyliลmy 'gi', g-globally, i-ignore case.
Tลumaczenie Perla OperaTor
Jest to podobne do Podstawiania, ale nie uลผywa ลผadnych wyraลผeล regularnych Perla, zamiast tego moลผemy bezpoลrednio przekazaฤ wartoลฤ lub sลowo, ktรณre chcemy zastฤ piฤ.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Wyjลcie:
Czeลฤ, krowo, jesteล
We/wy pliku Perla
Perl zostaล zaprojektowany do efektywnego manipulowania plikami i operacjami wejลcia/wyjลcia. Gลรณwnฤ zaletฤ Perla jest parsowanie plikรณw i obsลuga plikรณw. Istnieje wiele wbudowanych funkcji i operatorรณw uลผywanych podczas obsลugi plikรณw w Perlu.
Zasadniczo operacje na plikach wykonywane za pomocฤ Perla sฤ wykonywane przy uลผyciu FILEHANDLE. Musimy zdefiniowaฤ ten FILEHANDLE podczas otwierania pliku do odczytu lub zapisu.
W tym samouczku dotyczฤ cym skryptu Perla dowiesz siฤ:
Perl Otwรณrz plik
Plik moลผemy otworzyฤ korzystajฤ c z funkcji open() dostฤpnej w Perlu.
open(FILEHANDLE, "filename or complete path of the file");
Teraz otworzyliลmy plik i teraz pojawia siฤ pytanie. Czy to do czytania czy do pisania?
Perl Odczyt pliku i Perl Zapis pliku
Perl ma pewne tryby, ktรณrych naleลผy uลผyฤ do odczytu, zapisu lub doลฤ czenia pliku.
Read โ open(my $fh,"<filename or complete path of the file"); Write โ open(my $fh,">filename or complete path of the file"); Append โ open(my $fh,">>filename or complete path of the file");
Kilka przykลadรณw odczytu pliku:

Zaลรณลผmy, ลผe mamy plik Perla o nazwie file.txt i zawiera on kilka linii tekstu. Musimy otworzyฤ ten plik i wydrukowaฤ go.
open(FH,"<file.txt");
while(<FH>) # Looping the file contents using the FH as a filehandle.
{
print "$_";
}
close FH;
or
open(FH,"<file.txt");
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
print "$_";
}
close FH;
Spowoduje to wydrukowanie zawartoลci pliku na ekranie wyjลciowym.
Teraz napiszemy program do tworzenia i zapisywania danych do pliku Perla.

open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Spowoduje to zapisanie danych wejลciowych dostarczonych w czasie wykonywania i utworzenie pliku test.txt, ktรณry bฤdzie zawieraล dane wejลciowe.
Powyลผszy sposรณb zawsze bฤdzie polegaล na utworzeniu pliku o nazwie test.txt i zapisaniu danych wejลciowych do pliku; napiszemy to samo, aby doลฤ czyฤ plik.

open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
| Tryby pracy | OPIS |
|---|---|
|
< |
Czytaj |
|
+< |
Czyta i pisze |
|
> |
Tworzy, pisze i obcina |
|
+> |
Czytaj, pisz, twรณrz i wycinaj |
|
>> |
Pisze, doลฤ cza i tworzy |
|
+>> |
Czytaj, pisz, doลฤ czaj i twรณrz |
Teraz musimy zobaczyฤ, jak czytaฤ, zapisywaฤ i doลฤ czaฤ pliki, korzystajฤ c z podstawowych przykลadรณw.
Zobaczymy jeszcze kilka przykลadรณw i innych funkcji, ktรณre pomogฤ lepiej zrozumieฤ pliki.
Perl Powiedz
Ta metoda zwrรณci bieลผฤ cฤ pozycjฤ FILEHANDLER w bajtach, jeลli okreลlono inaczej, za pozycjฤ uzna ostatniฤ liniฤ.
open(FH, "test.pl");
while(<FH>)
{
$a=tell FH;
print "$a";
}
Poszukiwanie Perla
Funkcja wyszukiwania jest podobna do wywoลania systemowego fseek. Ta metoda sลuลผy do umieszczania wskaลบnika pliku w okreลlonej lokalizacji poprzez okreลlenie bajtรณw, po ktรณrych nastฤpuje poczฤ tek lub koniec wskaลบnika pliku.
seek FH, bytes, WHENCE;
WHENCE to pozycja wskaลบnika pliku, od ktรณrego naleลผy rozpoczฤ ฤ. Zero ustawi to od poczฤ tku pliku.
Przykลad: Niech plik input.txt zawiera pewne dane, takie jak โWitam, to jest mรณj ลwiatโ.
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
Wyjลcie:
to jest mรณj ลwiat
Odลฤ czenie Perla
Odลฤ czenie sลuลผy do usuniฤcia pliku.
unlink("filename or complete file path");
Obsลuga katalogรณw:
Moลผemy takลผe obsลugiwaฤ katalogi, poprzez ktรณre moลผemy obsลugiwaฤ wiele plikรณw.
zobaczmy, jak otworzyฤ katalog. Moลผemy uลผyฤ metod opendir i readdir.
opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.
while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
print "$_\n";
}
closedir(DIR); #used to close the directory handler.
or
opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
print "$_\n";
}
closedir(DIR);
Spowoduje to wydrukowanie wszystkich dostฤpnych plikรณw w tym katalogu.
Testy plikรณw Perla i ich znaczenie
|
-r |
Aby sprawdziฤ, czy plik/katalog jest czytelny dla bieลผฤ cego uลผytkownika/grupy |
|
-w |
Aby sprawdziฤ, czy bieลผฤ cy uลผytkownik/grupa moลผe zapisaฤ plik/katalog |
|
-x |
Aby sprawdziฤ, czy plik/katalog jest wykonywalny przez bieลผฤ cego uลผytkownika/grupฤ |
|
-o |
Aby sprawdziฤ, czy plik/katalog jest wลasnoลciฤ bieลผฤ cego uลผytkownika |
|
-R |
Aby sprawdziฤ, czy plik/katalog jest czytelny dla tego rzeczywistego uลผytkownika/grupy |
|
-W |
Aby sprawdziฤ, czy plik/katalog moลผe byฤ zapisywany przez tego prawdziwego uลผytkownika/grupฤ |
|
-X |
Aby sprawdziฤ, czy plik/katalog jest wykonywalny przez tego prawdziwego uลผytkownika/grupฤ |
|
-O |
Aby sprawdziฤ, czy plik/katalog jest wลasnoลciฤ tego prawdziwego uลผytkownika |
|
-e |
Aby sprawdziฤ, czy istnieje nazwa pliku/katalogu |
|
-z |
Aby sprawdziฤ, czy plik istnieje i ma zerowy rozmiar (zawsze false dla katalogรณw) |
|
-f |
Aby sprawdziฤ, czy Entry jest zwykลym plikiem |
|
-d |
Aby sprawdziฤ, czy Entry jest katalogiem |
|
-l |
Aby sprawdziฤ, czy Entry jest dowiฤ zaniem symbolicznym |
|
-S |
Aby sprawdziฤ, czy Entry jest gniazdem |
|
-p |
Aby sprawdziฤ, czy Wejลcie jest nazwanym potokiem (โFIFOโ) |
|
-b |
Aby sprawdziฤ, czy wpis jest specjalnym plikiem blokowym (jak dysk do montaลผu) |
|
-c |
Aby sprawdziฤ, czy wpis jest specjalnym plikiem znakowym (jak urzฤ dzenie we/wy) |
|
-u |
Aby sprawdziฤ, czy plik lub katalog ma ustawionฤ wartoลฤ setuid |
|
-g |
Aby sprawdziฤ, czy plik lub katalog ma setgid |
|
-k |
Aby sprawdziฤ, czy plik lub katalog ma ustawiony bit sticky |
|
-t |
Podany uchwyt pliku to TTY (poniewaลผ w przypadku funkcji systemowej isatty() w tym teลcie nie moลผna przetestowaฤ nazw plikรณw) |
|
-T |
Aby sprawdziฤ, czy plik wyglฤ da jak plik โtekstowyโ. |
|
-B |
Aby sprawdziฤ, czy plik wyglฤ da jak plik โbinarnyโ. |
|
-M |
Aby sprawdziฤ wiek modyfikacji (mierzony w dniach) pliku |
|
-A |
Aby sprawdziฤ wiek dostฤpu (mierzony w dniach) do pliku |
|
-C |
Aby sprawdziฤ wiek modyfikacji i-wฤzลa (mierzony w dniach) pliku |
Podprogram Perla
Co to jest podprogram?
Podprogramy sฤ podobne do funkcji w innych jฤzykach programowania. Korzystaliลmy juลผ z niektรณrych wbudowanych funkcji, takich jak print, chomp, chop itp. Moลผemy pisaฤ wลasne podprogramy w Perlu. Podprogramy te moลผna zapisaฤ w dowolnym miejscu programu; lepiej jest umieลciฤ podprogramy na poczฤ tku lub na koลcu kodu.

Przykลad podprogramรณw
sub subroutine_name
{
Statementsโฆ; # this is how typical subroutines look like.
}
Skoro juลผ wiemy, jak napisaฤ podprogram, jak uzyskaฤ do niego dostฤp?
Musimy uzyskaฤ dostฤp do podprogramu lub go wywoลaฤ, uลผywajฤ c nazwy podprogramu poprzedzonej symbolem โ&โ.
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
Przekazywanie parametrรณw i argumentรณw Perla
Podprogramy lub funkcja Perla sฤ pisane w celu umieszczenia w nich kodu wielokrotnego uลผytku. Wiฤkszoลฤ kodu wielokrotnego uลผytku wymaga przekazania parametrรณw do podprogramu. Tutaj dowiemy siฤ, jak przekazywaฤ argumenty do podprogramu.
sub display
{
my $var=@_; # @_ is a special variable which stores the list of arguments passed.
print "$var is the value passed";
}
display(2,3,4); #this is how we need to pass the arguments.
Wyjลcie:
3 to przekazana wartoลฤ
@_ to specjalna zmienna tablicowa, w ktรณrej przechowywane sฤ argumenty przekazane do podprogramรณw.
Perl Shift
Moลผemy rรณwnieลผ uลผyฤ sลowa kluczowego โshiftโ, ktรณre przesuwa jeden parametr na raz do zmiennej lub $_[0],$_[1]โฆ, ktรณra jest pojedynczym elementem tablicy @_
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
Wyjลcie:
czeลฤ, minฤลo
Podprogramy sฤ zwykle uลผywane w programowaniu obiektowym, a takลผe w miejscach, w ktรณrych moลผna umieลciฤ wiฤcej kodu wielokrotnego uลผytku.
Gลรณwnฤ funkcjonalnoลciฤ podprogramรณw jest wykonanie jakiegoล zadania i zwrรณcenie wyniku kodu wielokrotnego uลผytku.

Moลผemy zwrรณciฤ wartoลฤ z podprogramu za pomocฤ sลowa kluczowego return.
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
Wyjลcie:
11
$result bฤdzie zawieraล wartoลฤ dodanych $a i $b.
Moลผemy takลผe przekazaฤ skrรณty i tablicฤ bezpoลrednio do podprogramu.
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
Wyjลcie:
1a2b
Moลผemy rรณwnieลผ zwrรณciฤ hash lub tablicฤ.
sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;
Wyjลcie:
Wewnฤ trz podprogramu 2b1a Po wywoลaniu podprogramu 2b1a
Format Perla
Perl ma mechanizm, za pomocฤ ktรณrego moลผemy generowaฤ raporty. Uลผywajฤ c tej funkcji, moลผemy tworzyฤ raporty dokลadnie tak, jak chcemy, podczas drukowania na ekranie wyjลciowym lub w pliku. Prosty format moลผna zapisaฤ za pomocฤ funkcji printf lub sprintf dostฤpnych w Perlu.
printf "%05d\n", 30;
Spowoduje to dodanie zer na poczฤ tku liczby 30, co spowoduje, ลผe ลฤ czna liczba cyfr wyniesie 5. Tฤ samฤ zasadฤ moลผna zastosowaฤ w przypadku funkcji sprintf.
sprintf "%05d\n", 30; # This will print the same as printf.
Uลผywajฤ c printf i sprintf, moลผemy uzyskaฤ wiฤkszoลฤ formatรณw Perla. W przypadku raportรณw bฤdzie to trudne do zaimplementowania.
================================================== =========================
Imiฤ Adres Wiek Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Powyลผej znajduje siฤ przykลad raportรณw, ktรณre musimy wydrukowaฤ w ten sam sposรณb w Perlu. Moลผna to osiฤ gnฤ ฤ, uลผywajฤ c perl printf i perl sprintf. Moลผna to skutecznie zaimplementowaฤ, uลผywajฤ c format.
Format moลผna zadeklarowaฤ w poniลผszy sposรณb.
format FORMATNAME=FORMATLIST.
Tutaj uลผyjemy okreลlonej metody zapisu, aby wydrukowaฤ dane na ekranie wyjลciowym lub w pliku.
| symbol | OPIS |
|---|---|
|
@ |
Uลผywany do reprezentowania poczฤ tku posiadacza pola |
|
> |
Prawidลowe wyrรณwnanie tekstu |
|
< |
Wyrรณwnanie tekstu do lewej |
|
| |
Wyลrodkowanie |
|
# |
Numeryczne, jeลli podano wiele #. Przyjmuje siฤ jako komentarz, jeลli podano pojedynczy # |
|
. |
Kropka dziesiฤtna |
|
^ |
Poczฤ tek uchwytu pola moลผe byฤ rรณwnieลผ uลผyty do multilinii, a takลผe do zawijania sลรณw |
|
~ |
Linia powinna byฤ pusta, jeลli zmienna jest pusta |
|
@* |
Wiele linii. |
($name,$addr,$age,$phone)=("krishna","chennai","24","929309242");
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232");
write;
format STDOUT_TOP=
===============================================================
NAME ADDRESS AGE PHONE
===============================================================
.
format STDOUT=
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<<
$name, $addr, $age, $phone
.
Wykonaj kod, aby zobaczyฤ wynik.
Uลผywamy symbolu @, aby okreลliฤ poczฤ tek posiadacza pola lub ciฤ gu znakรณw, โ<โ kaลผdego znaku.
Uลผywamy STDOUT do drukowania na standardowym wyjลciu. Moลผemy to zmieniฤ na obsลugฤ plikรณw, ktรณrej uลผywamy do zapisywania danych do pliku.
open(REPORT,">test.txt");
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232");
write REPORT;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232");
write REPORT;
format REPORT_TOP=
===============================================================
NAME ADDRESS AGE PHONE
===============================================================
.
format REPORT=
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<<
$name, $addr, $age, $phone
Moลผemy zamieniฤ โ<โ na โ>โ lub โ|โ aby zmieniฤ wyrรณwnanie tekstu. STDOUT_TOP sลuลผy do projektowania nagลรณwka formatu. Moลผemy rรณwnieลผ uลผyฤ tego samego z procedurฤ obsลugi plikรณw za pomocฤ FH_TOP (FH jest procedurฤ obsลugi pliku). Spowoduje to przesลanie formatu do pliku, nad ktรณrym pracujemy NA.
Standardy kodowania Perla
Kaลผdy programista bฤdzie miaล wลasne poczucie pisania kodu przy uลผyciu okreลlonych standardรณw; standardy te powinny byฤ na tyle znane, aby inny programista mรณgล zrozumieฤ i wลaลciwie obsลugiwaฤ kod.
Standardy kodowania w Perlu
Pisanie kodu jest proste i ลatwe. Problem pojawia siฤ, gdy trzeba go utrzymaฤ na pรณลบniejszych etapach. Podczas pisania kodu naleลผy przestrzegaฤ wลaลciwych wytycznych i standardรณw kodowania. Perl definiuje rรณwnieลผ pewne standardy, ktรณre bฤdฤ przydatne dla programistรณw podczas pisania kodu. Zaleca siฤ ลadowanie moduลรณw โstrictโ i โwarnings moduleโ podczas pisania kodu. Kaลผdy z tych moduลรณw ma swoje wลasne znaczenie. Strict sprawi, ลผe zadeklarujemy zmiennฤ przed uลผyciem, a takลผe poinformuje, czy w kodzie wystฤpuje jakieล puste sลowo. Moduลu ostrzeลผeล moลผna alternatywnie uลผyฤ, przekazujฤ c opcjฤ โ-wโ do interpretera Perla w Shebangu. Ostrzeลผenia zostanฤ wyลwietlone na ekranie wyjลciowym.
#!/usr/bin/perl โw
Poniลผej znajduje siฤ kilka list standardรณw.
- Uลผyj moduลu โลcisลeโ i โostrzeลผeniaโ.
- Usuล zmiennฤ , ktรณra nie jest uลผywana.
- Nazwy zmiennych powinny byฤ zrozumiaลe dla innych uลผytkownikรณw. Np.: $name, @fileData itp.
- Podczas kodowania skryptu wymagana jest dokumentacja.
- Nie koduj na staลe ลผadnych wartoลci, raczej sprรณbuj pobraฤ je dynamicznie lub poproล uลผytkownika o wprowadzenie w czasie wykonywania. (ลcieลผka pliku, Nazwy plikรณw).
- Maksymalizuj ponowne wykorzystanie kodu. Sprรณbuj umieลciฤ kod wielokrotnego uลผytku w podprogramach.
- Oznacza to, ลผe podprogramom naleลผy podawaฤ peลne nazwy.
- Podprogramy muszฤ byฤ napisane z odpowiednimi komentarzami i dokumentacjฤ .
- Zawsze inicjuj zmienne.
- Zawsze sprawdzaj kody powrotu wywoลaล systemowych. Otwarcie pliku moลผe nastฤ
piฤ lub nie, kod powrotu wyลwietli status bลฤdu, jeลli plik nie istnieje.
Np.: otwarty (FH,
- Podprogram powinien zawsze zwracaฤ wartoลฤ.
- Otwรณrz krฤcone w tej samej linii.
- Pojedynczฤ liniฤ BLOK moลผna umieลciฤ w jednej linii z krฤconymi.
- Uลผywaj etykiet podczas PฤTLI, ลatwo bฤdzie wyjลฤ z pฤtli, gdy zajdzie taka potrzeba.
- Uลผyj podkreลlenia, gdy dลugie frazy sลowne sฤ zapisywane jako nazwa zmiennej lub podprogram.
- Sprรณbuj uลผyฤ prostego wyraลผenia regularnego podczas kodowania.
Doskonaลy przykลad ze standardami kodowania:
#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl
use strict;
use warnings;
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>)
{
print $line;
} # Looping file handler to print data
Obsลuga bลฤdรณw Perla
Co to jest wyjฤ tek?
Wyjฤ tek to zdarzenie, ktรณre ma miejsce podczas wykonywania programu i powoduje zawieszenie lub zakoลczenie programu.
Obsลuga bลฤdรณw
Obsลuga bลฤdรณw to taka, o ktรณrฤ kaลผdy programista musi zadbaฤ podczas programowania. Perl udostฤpnia takลผe techniki obsลugi bลฤdรณw, dziฤki ktรณrym moลผemy przechwyciฤ bลฤ d i odpowiednio sobie z nim poradziฤ.
Obsลuga bลฤdรณw w Perlu
Istnieje wiele sposobรณw sprawdzania bลฤdรณw w programie. Musimy sprawdziฤ kody powrotu funkcji, ktรณrej uลผywamy. Jeลli potrafimy poprawnie obsลuลผyฤ te kody powrotu, wiฤkszoลฤ bลฤdรณw moลผna obsลuลผyฤ.
Co zwrรณci w przypadku wywoลaล systemowych?
W przypadku wywoลaล systemowych status powrotu zostanie zapisany w dwรณch specjalnych zmiennych $? I $!
$! โ Spowoduje to przechwycenie numeru bลฤdu lub numeru bลฤdu powiฤ zanego z komunikatem o bลฤdzie.
$? โ Spowoduje to zatrzymanie funkcji system() statusu powrotu.
Uลผywanie operatora Perl lub operatora logicznego
Podczas korzystania z wywoลaล systemowych do obsลugi bลฤdรณw moลผna uลผywaฤ operatorรณw logicznych lub operatorรณw.
ex:
open(FH,"<test.txt");
Spowoduje to otwarcie pliku w trybie odczytu, jeลli plik istnieje.
Co siฤ stanie, jeลli brakuje pliku?
open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists.
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR
Perla Ewa
Funkcja Eval radzi sobie z bลฤdami krytycznymi, bลฤdami czasu kompilacji, bลฤdami wykonania i tymi bลฤdami, ktรณre w pewnym momencie koลczฤ kod.
Funkcja Perl Eval moลผe mieฤ blok kodu lub wyraลผenie. Evals uwaลผa wszystko, co jest w nim umieszczone, za ciฤ g znakรณw.
Rozwaลผmy sytuacjฤ wywoลania podprogramu, ktรณry nie jest zdefiniowany w skrypcie. W tej sytuacji skrypt koลczy siฤ stwierdzeniem โniezdefiniowany podprogram &XYZ, bลฤ d ten moลผna obsลuลผyฤ w funkcji eval.
Blok evals ma wiele zastosowaล; jednym z nich jest potrzeba zaลadowania moduลu specyficznego dla systemu operacyjnego w czasie wykonywania.
Przykลad: dzielenie przez zero powoduje bลฤ d krytyczny; aby sobie z tym poradziฤ, moลผemy umieลciฤ kod w bloku evals.
$a=5;
$b=0;
eval
{
'$result=$a/$b';
}
if($@)
{
print "$@"; # All the error codes returned by evals will get stored in $@.
}
Wyjลcie:
bลฤ d skลadniowy w C:\Users\XYZ\Text.pl linia 8, obok โ)
{โ
Wykonywanie C:\Users\XYZ\Text.pl zostaลo przerwane z powodu bลฤdรณw kompilacji.
Przykลad: eval przy uลผyciu instrukcji die w Perlu.
sub test
{
die "Dieing in sub test \n";
}
eval
{
test();
};
print "Caught : $@\n";
Wyjลcie:
Zลapany: ลmierฤ w podteลcie
Korzystanie z Perla Sprรณbuj
Perl nie obsลuguje blokรณw try, catch i wreszcie kodu, tak jak inne jฤzyki programowania. Nadal moลผemy z nich korzystaฤ, ลadujฤ c zewnฤtrzny moduล Perla.
uลผyj Try::Tiny;
Dziฤki temu moลผemy umieลciฤ Twรณj kod w bloku try i wychwyciฤ bลฤ d w bloku ostrzegawczym.
Zamiast $@ uลผytego w eval Try::Tiny uลผywa $_.
# obsลuลผ bลฤdy za pomocฤ moduลu obsลugi catch
try
{
die "Die now";
}
catch
{
warn "caught error: $_"; # not $@
};
Wreszcie uลผywam.
my $y;
try
{
die 'foo'
}
finally
{
$y = 'bar'
};
try
{
die 'Die now'
}
catch
{
warn "Returned from die: $_"
}
finally
{
$y = 'gone'
};
Wyjลcie:
foo w C:\Users\XYZ\Text.pl linia 4.
W ten sposรณb moลผemy uลผyฤ try, catch i wreszcie.
sprรณbuj { # instrukcja }
zลapaฤ {# instrukcja }
w koลcu { # instrukcja };
Or
try
{
# statement
}
finally
{
# statement
};
Wyjลcie:
Or
try
{
# statement
}
finally
{
# statement
}
catch
{
# statement
};
Wyjลcie:
Programowanie za pomocฤ gniazd Perl
Co to jest gniazdo?

Gniazdo to medium, za poลrednictwem ktรณrego dwa komputery mogฤ wspรณลdziaลaฤ w sieci przy uลผyciu adresu sieciowego i portรณw.
Zaลรณลผmy, ลผe A (serwer) i B (klient) to dwa systemy, ktรณre muszฤ wspรณลdziaลaฤ ze sobฤ za pomocฤ gniazd w celu uruchomienia niektรณrych programรณw.
Aby to zaimplementowaฤ, musimy utworzyฤ gniazda zarรณwno w A (serwerze), jak i B (kliencie), A bฤdzie w stanie odbierajฤ cym, a B bฤdzie w stanie wysyลajฤ cym.
Serwer):
Tutaj serwer chce otrzymaฤ poลฤ czenie od B (Klienta) i wykonaฤ pewne zadania, a nastฤpnie odesลaฤ wynik do B (Klienta). Gdy wykonujemy kod, system operacyjny w A prรณbuje utworzyฤ gniazdo i wiฤ ลผe jeden port z tym gniazdem. Nastฤpnie bฤdzie nasลuchiwaล od nadawcy, ktรณrym jest B.
B. (Klient).
Tutaj klient chce wysลaฤ jakiล program ze swojego systemu do A (Serwera) w celu przetworzenia. Kiedy wykonujemy kod, system operacyjny w B prรณbuje utworzyฤ gniazdo do komunikacji z A (Serwerem), B musi okreลliฤ adres IP i numer portu A, do ktรณrego B chce siฤ poลฤ czyฤ.
Jeลli wszystko pรณjdzie dobrze, oba systemy bฤdฤ wspรณลdziaลaฤ w celu wymiany informacji przez jeden port. Perl obsลuguje takลผe programowanie za pomocฤ gniazd.
Perl ma natywny interfejs API, za pomocฤ ktรณrego moลผna implementowaฤ gniazda. Aby to uลatwiฤ, istnieje wiele moduลรณw CPAN, za pomocฤ ktรณrych piszemy programy gniazdowe.
Operacje serwerowe:
- Utwรณrz gniazdo
- Powiฤ ลผ gniazdo z adresem i portem
- Nasลuchuj gniazda na tym adresie portu
- Zaakceptuj poลฤ czenia klienta, ktรณry prรณbuje poลฤ czyฤ siฤ przy uลผyciu portu i adresu IP serwera
- Wykonaj operacje
klientem Operacje:
- Utwรณrz gniazdo
- Poลฤ cz siฤ z serwerem, uลผywajฤ c jego adresu portu
- Wykonaj operacje

Gniazdo.io
Jest to jeden moduล do programowania gniazd, ktรณry opiera siฤ na programowaniu obiektowym. Moduล ten nie obsลuguje typu sieci INET stosowanego w sieciach.
I/O::Socket::INET:
Moduล ten obsลuguje domenฤ INET i jest zbudowany na IO::Sockets. Wszystkie metody dostฤpne w IO::Sockets sฤ dziedziczone w module INET.
Klient i serwer korzystajฤ cy z protokoลu TCP:
TCP jest protokoลem zorientowanym na poลฤ czenie; bฤdziemy uลผywaฤ tego protokoลu do programowania gniazd.
Zanim przejdziemy dalej, zobaczmy jak moลผemy utworzyฤ obiekt dla moduลu IO::Socket::INET i utworzyฤ gniazdo.
$socket = IO::Socket::INET->new(PeerPort => 45787, PeerAddr => inet_ntoa(INADDR_BROADCAST), Proto => udp,LocalAddr => 'localhost',Broadcast => 1 ) or die "Can't create socket and bind it : $@n";
Nowa metoda w module IO::Socket::INET akceptuje hash jako parametr wejลciowy podprogramu. Ten skrรณt jest predefiniowany i musimy jedynie podaฤ wartoลci kluczom, ktรณrych chcemy uลผyฤ. Istnieje lista kluczy uลผywanych przez ten skrรณt.
|
Adres rรณwnorzฤdny |
Adres hosta zdalnego |
|
Host rรณwnorzฤdny |
Synonim adresu rรณwnorzฤdnego |
|
Port rรณwnorzฤdny |
Zdalny port lub usลuga |
|
Adres lokalny |
Adres powiฤ zania hosta lokalnego |
|
localhost |
Synonim adresu lokalnego |
|
Port lokalny |
Port powiฤ zania hosta lokalnego |
|
Proto |
Nazwa protokoลu (lub numer) |
|
Typ |
Typ gniazda |
|
Sลuchaj |
Rozmiar kolejki do odsลuchania |
|
Uลผyj ponownie adresu |
Ustaw SO_REUSEADDR przed powiฤ zaniem |
|
Ponowne uลผycie |
Ustaw SO_REUSEADDR przed powiฤ zaniem |
|
Uลผyj ponownie portu |
Ustaw SO_REUSEPORT przed powiฤ zaniem |
|
Nadawanie |
Ustaw SO_BROADCAST przed powiฤ zaniem |
|
Timeout |
Wartoลฤ limitu czasu dla rรณลผnych operacji |
|
Wielodomowy |
Wyprรณbuj wszystkie adresy dla hostรณw wieloadresowych |
|
Blokowanie |
Okreลl, czy poลฤ czenie bฤdzie w trybie blokowania |
Serwer.pl
use IO::Socket;
use strict;
use warnings;
my $socket = new IO::Socket::INET (
LocalHost => 'localhost',
LocalPort => '45655',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!n" unless $socket;
print "Waiting for the client to send datan";
my $new_socket = $socket->accept();
while(<$new_socket>) {
print $_;
}
close($socket);
Klient.pl
use strict; use warnings; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'localhost', PeerPort => '45655', Proto => 'tcp', ); die "Could not create socket: $!n" unless $socket; print $socket "Hello this is socket connection!n"; close($socket);
Uwaga:
W programowaniu gniazd bฤdziemy musieli najpierw uruchomiฤ Server.pl, a nastฤpnie Client.pl indywidualnie w rรณลผnych wierszach poleceล, jeลli dziaลamy na hoลcie lokalnym.
Co to sฤ moduลy i pakiety Perla
Moduลy i Pakiety sฤ ze sobฤ ลciลle powiฤ zane i niezaleลผne. Pakiet: Pakiet Perla jest rรณwnieลผ nazywany przestrzeniฤ nazw i zawiera wszystkie uลผywane unikalne zmienne, takie jak skrรณty, tablice, skalary i podprogramy. Moduล: Moduล to zbiรณr kodu wielokrotnego uลผytku, w ktรณrym piszemy podprogramy. Moduลy te moลผna zaลadowaฤ do programรณw w jฤzyku Perl, aby wykorzystaฤ podprogramy zapisane w tych moduลach.
Czym sฤ moduลy Perla?
Standardowe moduลy zostanฤ zainstalowane podczas instalacji Perla w dowolnym systemie. CPAN: Kompleksowy Perl Archive Network โ globalne repozytorium moduลรณw Perla. Nasze wลasne, dostosowane moduลy Perla, ktรณre mogฤ byฤ napisane przez nas. Zasadniczo moduล zaลadowany do dowolnego skryptu wyeksportuje wszystkie swoje zmienne globalne i podprogramy. Podprogramy te moลผna bezpoลrednio wywoลywaฤ tak, jakby byลy zadeklarowane w samym skrypcie. Moduลy Perla moลผna pisaฤ z rozszerzeniem .pm do nazwy pliku Ex: Foo.pm. Moduล moลผna napisaฤ, uลผywajฤ c na poczฤ tku programu polecenia โpakiet Fooโ.
Podstawowy moduล Perla:
#!/usr/bin/perl
package Arithmetic;
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Brak wyjลcia
Aby skorzystaฤ z tego moduลu Perla, musimy umieลciฤ go w aktualnie dziaลajฤ cym katalogu.
Moลผemy zaลadowaฤ moduล Perla za pomocฤ require lub use w dowolnym miejscu kodu. Gลรณwnฤ rรณลผnicฤ miฤdzy wymaganiem a uลผyciem jest wymaganie zaลadowanego moduลu w czasie wykonywania i uลผywanie ลadowaล w czasie kompilacji.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Tutaj, w powyลผszym przykลadzie, dostฤp do podprogramรณw uzyskujemy przy uลผyciu peลnej nazwy moduลu.
Dostฤp do pakietu moลผemy rรณwnieลผ uzyskaฤ za pomocฤ โuลผyj arytmetykiโ.
Eksporter:
Moduล ten posiada domyลlnฤ funkcjonalnoลฤ importowania metod.
#!/usr/bin/perl
package Arithmetic;
require Exporter;
@ISA= qw(Exporter); # This is basically for implementing inheritance.
@EXPORT = qw(add);
@EXPORT_OK = qw(subtract);
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Tablicy @EXPORT moลผna uลผyฤ do przekazania listy zmiennych i podprogramรณw, ktรณre domyลlnie zostanฤ wyeksportowane do wywoลujฤ cego moduล.
Tablicฤ @EXPORT_OK moลผna wykorzystaฤ do przekazania listy zmiennych i podprogramรณw, ktรณre bฤdฤ eksportowane na ลผฤ danie, co uลผytkownik musi okreลliฤ podczas ลadowania moduลu.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Domyลlnie eksport podprogramu dodawania zostanie wyeksportowany. Metoda Subtract nie zostanie wyeksportowana, jeลli nie zostanie okreลlona podczas ลadowania moduลu.
Programowanie obiektowe w Perlu
W tej sekcji dowiemy siฤ, jak tworzyฤ moduลy obiektowe w Perlu. Najpierw zobaczmy, co to jest za obiekt? Obiekt to instancja, za pomocฤ ktรณrej moลผemy uzyskaฤ dostฤp, modyfikowaฤ i lokalizowaฤ pewne dane w dowolnym module Perla. To nic innego jak sprawienie, ลผe istniejฤ cy pakiet Perla, zmienne i podprogramy bฤdฤ dziaลaฤ jak klasy, obiekty i metody w odniesieniu do innych jฤzykรณw programowania.
Utwรณrz klasฤ
Wiemy juลผ jak stworzyฤ moduลy z poprzedniego tematu. Celem klasy jest przechowywanie metod i zmiennych. Moduล Perla bฤdzie miaล podprogramy, ktรณre sฤ metodami. Musimy uzyskaฤ dostฤp do tych zmiennych i obiektรณw podprogramรณw.
Konstruktor Perla
Konstruktor w Perlu to metoda, ktรณra wykona i zwrรณci nam referencjฤ z nazwฤ moduลu otagowanฤ do referencji. Nazywa siฤ to bลogosลawieลstwem klasy. Uลผywamy okreลlonej zmiennej do bลogosลawienia klasy Perla, ktรณrฤ jest bลogosลawieลstwo.
#!/usr/bin/perl
package Arithmetic;
sub new
{
my $class=shift;
my $self={};
bless $self, $class;
return $self;
}
sub add
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Nowa metoda uลผywana jako konstruktor klasy. Konstruktor ten utworzy dla nas obiekt i powrรณci do skryptu wywoลujฤ cego ten konstruktor.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Tutaj musimy zrozumieฤ, w jaki sposรณb obiekt zostaล stworzony. Ilekroฤ prรณbujemy utworzyฤ obiekt dla klasy, musimy uลผyฤ peลnej nazwy klasy. Zaลรณลผmy, ลผe klasa Perla znajduje siฤ w jakimล pliku lib\Math\Arithmetic.pm. A jeลli chcemy uzyskaฤ dostฤp do tej klasy Perla z katalogu lib, musimy podaฤ caลฤ ลcieลผkฤ do klasy podczas wywoลywania skryptu.
uลผyj lib::Math::Arithmetic;
my $obj = lib::Math::Arithmetic->new();
W ten sposรณb odbywa siฤ tworzenie obiektรณw w Perlu.
@INC:
Skฤ d skrypt Perla wie, gdzie istnieje moduล biblioteki? Perl zna jedynie bieลผฤ cy katalog skryptu i ลcieลผkฤ biblioteki wbudowanej w Perl. Ilekroฤ uลผywamy moduลu Perla, ktรณry nie znajduje siฤ w bieลผฤ cym katalogu lub ลcieลผce biblioteki Perla, skrypt zawsze zakoลczy siฤ niepowodzeniem. W przypadku @INC jest to tablica przechowujฤ ca wszystkie ลcieลผki katalogรณw, w ktรณrych musi szukaฤ moduลรณw Perla. Sprรณbuj wykonaฤ to polecenie i zobacz, jaki bฤdzie wynik.
perl โe "print @INC"
To da pewne dane wyjลciowe i jest to ลcieลผka, w ktรณrej bฤdฤ dostฤpne moduลy lib. Ilekroฤ uลผywamy nowego moduลu biblioteki, musimy powiedzieฤ Perlowi, interpreterowi, aby sprawdziล to konkretne miejsce, w ktรณrym dostฤpny jest moduล Perla.
push(@INC, "PATH TO YOUR MODULE");
Zrรณb to jako pierwszฤ liniฤ kodu. To powie twojemu tลumaczowi, aby spojrzaล na tฤ ลcieลผkฤ. Lub posลugiwaฤ siฤ
lib Arithmetic; # List here is your Perl Module location
Destruktor Perla
Destruktor obiektu jest domyลlnie wywoลywany na koลcu i przed zakoลczeniem skryptu. Sลuลผy do niszczenia obiektรณw z pamiฤci.
Skrypty powลoki PERL V/s
- Programowanie w Perlu nie powoduje problemรณw z przenoลnoลciฤ , co jest czฤste w przypadku uลผywania rรณลผnych powลok w skryptach powลoki.
- Obsลuga bลฤdรณw jest w Perlu bardzo ลatwa
- Moลผesz ลatwo pisaฤ dลugie i zลoลผone programy w Perlu ze wzglฤdu na jego rozlegลoลฤ. Jest to w przeciwieลstwie do Shell, ktรณry nie obsลuguje przestrzeni nazw, moduลรณw, obiektรณw, dziedziczenia itp.
- Shell ma mniej dostฤpnych bibliotek wielokrotnego uลผytku. Nic w porรณwnaniu z CPAN Perla
- Shell jest mniej bezpieczny. Wywoลuje funkcje zewnฤtrzne (polecenia takie jak mv, cp itp. zaleลผฤ od uลผywanej powลoki). Wrฤcz przeciwnie, Perl wykonuje poลผytecznฤ pracฤ, korzystajฤ c z funkcji wewnฤtrznych.
Jak PERL jest wykorzystywany w testowaniu automatycznym
Perl jest szeroko stosowany w automatyce. Moลผe nie jest to najlepszy jฤzyk programowania na ลwiecie, ale najlepiej nadaje siฤ do niektรณrych typรณw zadaล. Porozmawiajmy, gdzie i dlaczego Perl jest uลผywany Testowanie automatyczne.
Testowanie pamiฤci
Co to jest przechowywanie? Dane przechowywane w plikach.
Zaลรณลผmy, ลผe mamy powiฤ zany magazyn Przypadek testowy gdzie musimy zapisaฤ dane na jednej partycji, przeczytaj je i sprawdลบ, czy dane sฤ zapisane poprawnie.
Moลผna to zrobiฤ rฤcznie, ale czy tester rฤczny moลผe wykonaฤ to samo 10000 razy? To bฤdzie koszmar! Potrzebujemy automatyzacji
Najlepszym narzฤdziem do automatyzacji wszystkiego, co jest zwiฤ zane z przechowywaniem, jest Perl ze wzglฤdu na techniki obsลugi plikรณw, REGEX i wydajne analizowanie plikรณw, ktรณre zajmuje najmniej czasu wykonania w porรณwnaniu do innych jฤzykรณw programowania.
Dlaczego musimy przetestowaฤ pamiฤฤ masowฤ ? Pomyลl o duลผych centrach danych, w ktรณrych dane bฤdฤ stale przepลywaฤ z jednego systemu do drugiego, a tysiฤ ce rekordรณw bฤdzie przechowywanych na sekundฤ. Testowanie wytrzymaลoลci takiego mechanizmu przechowywania jest niezbฤdne.
Wiele firm, takich jak HP, Dell, IBM a wielu producentรณw serwerรณw uลผywa Perla jako interfejsu do testowania funkcjonalnoลci w domenach pamiฤci masowej i sieci. NetApp jest jednฤ z takich firm, ktรณra caลkowicie pracuje nad pamiฤciฤ masowฤ i uลผywa jฤzyka Perl jako jฤzyka programowania do automatyzacji przypadkรณw testowych.
Jeลli interesuje Ciฤ automatyzacja Perla, wskazane byลoby zapoznanie siฤ z magazynowaniem i sieciฤ Concepts.
Testowanie serwerรณw i sieci:
Testowanie serwerรณw i sieci przy uลผyciu jฤzyka Perl
PERL jest szeroko stosowany w monitorowaniu czasu pracy i wydajnoลci serwerรณw.
Rozwaลผmy centrum danych, ktรณre ma 100 hostรณw (serwerรณw). Musisz poลฤ czyฤ siฤ z kaลผdym hostem i zdalnie wykonaฤ niektรณre polecenia. Chcesz takลผe ponownie uruchomiฤ system i sprawdziฤ, kiedy wrรณci do trybu online.
Rฤczne wykonanie tego zadania dla wszystkich 100 hostรณw bฤdzie koszmarem. Ale moลผemy to ลatwo zautomatyzowaฤ za pomocฤ Perla
Zaprojektuj kroki, aby osiฤ gnฤ ฤ powyลผszฤ automatyzacjฤ przy uลผyciu jฤzyka PERL
- Pobierz dane wejลciowe z pliku dotyczฤ ce informacji o hoลcie, takich jak (adres IP, nazwa uลผytkownika i hasลo).
- Uลผyj Net::SSH2, aby poลฤ czyฤ siฤ z kaลผdym systemem i ustanowiฤ kanaล do wykonywania poleceล.
- Wykonaj zestaw wymaganych poleceล, np.: ls, dir, ifconfig, ps itp.
- Zrestartuj system.
- Poczekaj 10 minut, aลผ system siฤ uruchomi.
- Pinguj system za pomocฤ moduลu Net::Ping i wydrukuj status.
Zakodujemy powyลผszy scenariusz.
Weลบmy plik o nazwie Wejลcie.txt, ktรณry bฤdzie przechowywaฤ peลne informacje o wszystkich hostach, z ktรณrymi musimy siฤ poลฤ czyฤ i wykonaฤ polecenie.
Wejลcie.txt
Hasลo roota 192.168.1.2
Hasลo roota 192.168.1.3
192.168.1.4 root root123
HostCheck.pl
use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new(); # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new(); #Creating object for Net::SSH2
open( FH, "Input.txt" ); # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ ) #Regex to get each info from file
{
$ip = $1;
my $user = $2;
my $password = $3;
$SSHObj->connect($ip);
print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
my $status = $SSHObj->auth_password( $user, $password );
print "$status\n";
die("unable to establish connection to -- $ip") unless ($status);
my $shell = $SSHObj->channel();
print "$_\n" while <$shell>;
$shell->blocking(1);
$shell->pty('tty');
$shell->shell();
sleep(5);
#Executing the list of command on particular host. Can be any command
print $shell "ls \n";
print "$_\n" while <$shell>;
print $shell "ps \n";
print "$_\n" while <$shell>;
print $shell "dir \n";
print "$_\n" while <$shell>;
print $shell "init 6\n"; #rebooting the system
push( @ips, $ip );
}
}
sleep 600;
foreach (@ips)
{
if ( $ping->ping($_) )
{
print "$_ is alive.\n" if $ping->ping($_);
}
else
{
print "$_ is not still up --waiting for it to come up\n";
}
}
Testowanie sieci
Perl nie ogranicza siฤ tylko do testowania pamiฤci masowej i sieci. Moลผemy rรณwnieลผ przeprowadzaฤ testy internetowe przy uลผyciu jฤzyka PERL. WWW-Mechanizacja to jeden moduล uลผywany do testowanie sieci. Zasadniczo nie uruchamia ลผadnej przeglฤ darki w celu przetestowania funkcjonalnoลci aplikacji internetowych, raczej korzysta z kodu ลบrรณdลowego stron HTML.
Moลผemy rรณwnieลผ przeprowadziฤ testy w oparciu o przeglฤ darkฤ za pomocฤ Selenium IDE, RC, sterownik sieciowy. Perl jest obsลugiwany Selenium.
\N"; #this przechowuje pozostaลy ciฤ
g po zakoลczeniu dopasowania wzorca.
wydrukuj โ





