[ Pobierz całość w formacie PDF ]
.Istnieje możliwośćpodania domyślnego czasu zerwania połączenia (czas_timeout) w sekundach oraz liczby wysyłanych bajtów w pakiecie co najwyżej1024.Aby wysłać pakiet do serwera, należy wykorzystać metodę ping:obiektping->ping(serwer [, czas_timeout]);Kiedy obiekt ping nie jest już potrzebny, zamyka się go metodą close.Oto przykład wysłania pakietu do zdalnego serwera:use Net::Ping;$pingobject = Net::PIng->new(icmp);if ($pingobject->ping('twój.serwer.com.pl')){print "Udało się skontaktować z serwerem."};Czarna Księga - PERL 94$pingobject->close() ;Udało się skontaktować z serwerem.Safe: bezpieczne wykonywanie koduModuł Safe umożliwia bezpieczne wykonywanie kodu dzięki wydzieleniu odpowiedniej przestrzeni oddzielonej od resztyprogramu.Metoda permit pozwala wskazać, jakie funkcje w takiej przestrzeni można wywoływać.Z uwagi na to, że kwestie bezpieczeństwaodgrywają dziś coraz większą rolę, to i moduł Safe bardzo się rozrósł zawiera mnóstwo metod.Oto przykład utworzenia nowejprzestrzeni Safe, umożliwienia wykonywania w niej instrukcji print i uruchomienia w niej kodu przy użyciu metody reval:use Safe;$safecompartment = new Safe;$safecomartment->permit(qw(print));$result = $safecompartment->reval("print \"Hello!\";");Hello!Tk: zestaw narzędzi TkZestawienie Perl/Tk jest wyjątkowo popularne, wobec czego pokażmy tu szereg przykładów zastosowania Tk w Perlu.Dla osób,które używały już Tcl/Tk, większość pokazywanego dalej kodu powinna być jasna (a jeśli tak nie będzie, pomocna okaże się dokumentacjaPerl/Tk).Zasada jest prosta: moduł Tk włączamy za pomocą instrukcji use Tk, tworzymy okno główne, a następnie tworzymy i wstawiamyobiekty poszczególnych elementów graficznych, określając ich opcje (na przykład -text).Na końcu wywołujemy funkcję MainLoop,przekazując sterowanie modułowi Tk, i uzyskujemy okno z przyciskami.W następnych podpunktach użyjemy modułu Tk; aby te przykładyzrozumieć, konieczna może być również znajomość Tk.Tk: przycisk i pole tekstowePrzykłady Perl/Tk zaczniemy od programu tworzącego okienko Tk z przyciskiem i polem tekstowym.Kiedy użytkownik kliknieprzycisk, program wyświetli w polu wyraz Hello!", co pokazano na rysunku 13.1:use Tk;$topwindow = MainWindow->new();$topwindow->Label('-text' => 'Przycisk i pole edycyjne - przykład')->pack();$topwindow->Button( -text => "Kliknij mnie!", -command => \&display)->pack(-side => "left");$textl = $topwindow->Text('-width'=> 40, '-height' => 2)->pack();$textl->bind('', \sdisplay);sub display {$textl->insert('end , "Hello!");}MainLoop;Tk: przyciski radio i pole opcjiPoniższy przykład Perl/Tk pokazuje wyświetlanie przycisków radio i pól opcji, jak również prezentuje opcję po kliknięciu jejprzez użytkownika rysunek 13.2.use Tk;$topwindow = MainWindow->new();$topwindow->Label('-text' => 'Przycisk radio i pole opcji - przykład1)->pack();$topwindow->Radiobutton( -text => "Radio l", -command => sub{$text1->delete ('l.0', end );$text1->insert( end , Kliknąłeś Radio 1 );})->pack();$topwindow->Radiobutton( -text => "Radio 2", -value=> 0 , -command => sub{$text1->delete ('l.0', end );$text1->insert( end , Kliknąłeś Radio 2 );})->pack();$topwindow->Checkbutton( -text => Opcja 1 , -command => sub{$text1->delete( 1.0 , end );$text1->insert( end , Kliknąłeś Opcję 1 );})->pack();$topwindow->Checkbutton( -text => Opcja 2 , -command => sub{$text1->delete( 1.0 , end );$text1->insert( end , Kliknąłeś Opcję 2 );})->pack();$text1=$topwindow->Text ( -width => 40, -height => 2)->pack();MainLoop;Tk: lista wyboruW tym przykładzie wyświetlimy listę wyboru, a kiedy użytkownik dokona wyboru przez podwójne kliknięcie, wynikwyświetlimy w polu tekstowym, jak na rysunku 13.3.use Tk;$topwindow = MainWindow->new();$topwindow->Label('-text' => 'Przykład listy wyboru')->pack();$listboxl = $topwindow->Listbox("-width" => 25, "-height" => 5)->pack();$listboxl->insert( end', "Jabłka", "Banany","Pomarańcze", "Gruszki", "Ananasy");$listboxl->bind('', \&getfruit);$textl = $topwindow->Text ('-width' => 40, '-height => 2)->pack();sub getfruit ($fruit = $listboxl->get('active');$textl->insert('end1, "$fruit");}MainLoop;Tk: suwakW następnym przykładzie wyświetlimy suwak pakietu Tk i poinformujemy o wartości wybranej przez użytkownika.use Tk;Czarna Księga - PERL 95$topwindow = MainWindow->new();$topwindow->Label('-text' => 'Przykład suwaka')->pack();$topwindow->Scale('-orient' => 'horizontal', '-from => 0, '-to => 200, 'tickinterval' => 40, '-label' => 'Wybierz wartość:', '-length'=> 200, '-variable' => \$value, '-command' => \&display)->pack();$textl = $topwindow->Text('-width' => 40, '-height' => 2)->pack();sub display {$textl->delete('l.0', 'end');$textl->insert('end', "$value");}MainLoop;Tk: płótnoW tym przykładzie utworzymy i wyświetlimy płótno z pakietu Tk, po czym narysujemy na nim niebieską elipsę rysunek 13.5.use Tk;$topwindow = MainWindow->new() ;$canvasl = $topwindow->Canvas('-width' => 200, '-height => 200)->pack();$canvasl->create('oval', '50', '50', '160', '160', '-fill' => 'blue');MainLoop;Tk: menuW następnym przykładzie utworzymy system menu Tk z dwoma menu: Plik i Edycja.Kiedy użytkownik wybierze z menu jakąśopcję, co zaprezentowano na rysunku 13.6, w polu tekstowym pokażemy wybraną opcję rysunek 13.7.use Tk;my $topwindow = MainWindow->new() ;$menubar =$topwindow->Frame()->pack('-side' => 'top', '-fill1 => 'x');$filemenu = $menubar->Menubutton('-text' => 'Plik')->pack('-side' => 'left');$filemenu->command('-label' => 'Otwórz', '-command' => sub ($text->delete('1.0', 'end1);$text->insert('end', "Wybrałeś otwarcie pliku.");));$filemenu->separator();$filemenu->command('-label' => 'Koniec', '-command' => sub {exit});$editmenu = $menubar->Menubutton('-text' => 'Edycja')->pack('-side1 => 'left');$editmenu->command('-label' => 'Szukaj1, '-command' => sub ($text->delete('1.0', 'end');$text->insert('end', "Wybrałeś wyszukiwanie.");});$editmenu->command('-label' => 'Zastąp1, '-command' => sub ($text->delete('l.0', 'end1);$text->insert('end', "Wybrałeś zastępowanie.");});$topwindow->Label('-text' => 'Przykład użycia menu')->pack();$text - $topwindow->Text('-width' => 40, '-height1 => 3)->pack();MainLoop;Tk: Okienka dialogoweTym razem wyświetlimy okienko dialogowe Tk, kiedy użytkownik kliknie przycisk rysunek 13.8.Użytkownik może wpisać wpole tekstowe dane, a jeśli potem kliknie przycisk OK, program wyświetli te dane w okienku głównym rysunek 13.9.use Tk;$topwindow = MainWindow->new ();$dialog = $topwindow->DialogBox(-title => "Okienko dialogowe", -buttons => ["OK", "Anuluj"]);$entry = $dialog->add("Entry", -width => 40)->pack();$topwindow->Label('-text' => 'Przykład okienka dialogowego')->pack();$topwindow->Button( -text => "Pokaż okienko dialogowe", -command => \&show)->pack();$textl = $topwindow->Text ('-width => 40, '-height' => 2)->pack();MainLoop;sub show {$result = $dialog->Show;if ($result eq "OK") {$textl->delete('1.0', 'end');$textl->insert('end', $entry->get);}}Rozdział 14.Struktury danychW skrócieNajważniejszym mankamentem Perla, występującym aż do wersji 5, jest brak obsługi złożonych struktur danych, nawetwielowymiarowych tablic
[ Pobierz całość w formacie PDF ]