• Nie Znaleziono Wyników

Narzędzia informatyczne w językoznawstwie Perl - Zastowanie modułów Marcin Junczys-Dowmunt

N/A
N/A
Protected

Academic year: 2021

Share "Narzędzia informatyczne w językoznawstwie Perl - Zastowanie modułów Marcin Junczys-Dowmunt"

Copied!
42
0
0

Pełen tekst

(1)

Narzędzia informatyczne w językoznawstwie

Perl - Zastowanie modułów

Marcin Junczys-Dowmunt junczys@amu.edu.pl

Zakład Logiki Stosowanej http://www.logic.amu.edu.pl

12. marca 2008

(2)

Co to jest moduł?

I Moduły dzielą nam program na logiczne części

I Grupują np. funkcje i zmienne ze sobą powiązane

I Pozwalają na proste włączanie do naszego programu kodu już wcześniej przez nas napisanego (tego nie będziemy omawiać)

I Pozwalają na włączanie do programu kodu napisanego przez inne osoby

I Korzystaliśmy już z modułów strict oraz Data::Dumper

(3)

Rodzaje modułów

I Moduły pragmatyczne, np. strict

Informują interpreter Perla np. o trybie działania

I Moduły standardowe, np. Data::Dumper Napisane w czystym Perlu

I Moduły rozszerzone, np. XML::Expat

Napisane np. za pomocą C++, w celu przyspieszenia działania lub np. interfejsy do systemu operacyjnego

(4)

Rodzaje modułów

I Moduły pragmatyczne, np. strict

Informują interpreter Perla np. o trybie działania

I Moduły standardowe, np. Data::Dumper Napisane w czystym Perlu

I Moduły rozszerzone, np. XML::Expat

Napisane np. za pomocą C++, w celu przyspieszenia działania lub np. interfejsy do systemu operacyjnego

(5)

Rodzaje modułów

I Moduły pragmatyczne, np. strict

Informują interpreter Perla np. o trybie działania

I Moduły standardowe, np. Data::Dumper Napisane w czystym Perlu

I Moduły rozszerzone, np. XML::Expat

Napisane np. za pomocą C++, w celu przyspieszenia działania lub np. interfejsy do systemu operacyjnego

(6)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(7)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(8)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(9)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(10)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(11)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(12)

Po co moduły?

Prosta odpowiedź: Nie ma sensu powtarzać pracę, którą ktoś przed nami wykonał lepiej!

I Wiele czynności podstawowych zostało już wcześniej zakodowanych

I Wystarczy znaleźć odpowiedni moduł, przeczytać dokumentację i korzystać z niego do woli

I Zmniejszy to nasz wysiłek, poprawi jakość programu

I Możemy znaleźć np. interfejsy do baz danych, parsery XML i HTML, moduły do ściągania stron internetowych, generatory PDF, ...

(13)

Skąd wziąć odpowiednie moduły?

I Sporo modułów znajduje się standardowo w naszej instalacji, np. Data::Dumper, Encode, XML::Parser, LWP, ...

I Największym źródłem gotowych modułów jest CPAN - Comprehensive Perl Archive Network, ok. 11000 modułów

I Problem: Wymaga kompilacji modułów – trudne pod Windowsem

I Rozwiązanie: PPM – Perl Package Manager

dostęp do (niezupełniej, ok. 7000 modułów) kopii CPAN dla Active Perl

I CPAN pozostaje niezastąpionym źródłem informacji o pakietach

(14)

Skąd wziąć odpowiednie moduły?

I Sporo modułów znajduje się standardowo w naszej instalacji, np. Data::Dumper, Encode, XML::Parser, LWP, ...

I Największym źródłem gotowych modułów jest CPAN - Comprehensive Perl Archive Network, ok. 11000 modułów

I Problem: Wymaga kompilacji modułów – trudne pod Windowsem

I Rozwiązanie: PPM – Perl Package Manager

dostęp do (niezupełniej, ok. 7000 modułów) kopii CPAN dla Active Perl

I CPAN pozostaje niezastąpionym źródłem informacji o pakietach

(15)

Skąd wziąć odpowiednie moduły?

I Sporo modułów znajduje się standardowo w naszej instalacji, np. Data::Dumper, Encode, XML::Parser, LWP, ...

I Największym źródłem gotowych modułów jest CPAN - Comprehensive Perl Archive Network, ok. 11000 modułów

I Problem: Wymaga kompilacji modułów – trudne pod Windowsem

I Rozwiązanie: PPM – Perl Package Manager

dostęp do (niezupełniej, ok. 7000 modułów) kopii CPAN dla Active Perl

I CPAN pozostaje niezastąpionym źródłem informacji o pakietach

(16)

Skąd wziąć odpowiednie moduły?

I Sporo modułów znajduje się standardowo w naszej instalacji, np. Data::Dumper, Encode, XML::Parser, LWP, ...

I Największym źródłem gotowych modułów jest CPAN - Comprehensive Perl Archive Network, ok. 11000 modułów

I Problem: Wymaga kompilacji modułów – trudne pod Windowsem

I Rozwiązanie: PPM – Perl Package Manager

dostęp do (niezupełniej, ok. 7000 modułów) kopii CPAN dla Active Perl

I CPAN pozostaje niezastąpionym źródłem informacji o pakietach

(17)

Skąd wziąć odpowiednie moduły?

I Sporo modułów znajduje się standardowo w naszej instalacji, np. Data::Dumper, Encode, XML::Parser, LWP, ...

I Największym źródłem gotowych modułów jest CPAN - Comprehensive Perl Archive Network, ok. 11000 modułów

I Problem: Wymaga kompilacji modułów – trudne pod Windowsem

I Rozwiązanie: PPM – Perl Package Manager

dostęp do (niezupełniej, ok. 7000 modułów) kopii CPAN dla Active Perl

I CPAN pozostaje niezastąpionym źródłem informacji o pakietach

(18)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np. String Language Text Processing > Lingua::

(19)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np. String Language Text Processing > Lingua::

(20)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np. String Language Text Processing > Lingua::

(21)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np. String Language Text Processing > Lingua::

(22)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np. String Language Text Processing > Lingua::

(23)

CPAN jako dokumentacja do pakietów

I Adres: http://www.cpan.org lub http://cpan.perl.org

I Spis modułów oraz wyszukiwanie: http://search.cpan.org

I Widzimy, że moduły zostały ułożone w pewnej hierarchii.

I Hierarchia jest raczej tematyczna i niekoniecznie odzwierciedla hierarchię samych modułów

I Np. Chart::Pie oraz Chart::Plot nie są podmodułami jakiegoś tajemniczego modułu Chart. Jednak oba moduły służą do tworzenia wykresów (różnych typów, w różne sposoby, pochodzą od różnych autorów)

I Proszę poprzeglądać sobie trochę katalog modułów, np.

String Language Text Processing > Lingua::

(24)

Prosty przykład korzystania z modułu

1 use s t r i c t ;

my $ t e s t = {

t r e f = > [ 1 ,2 ,3 ,4 ]

5 };

p r i n t D u m p e r ( $ t e s t );

I Pojawi się błąd, dlaczego?

I Musimy najpierw zaimportować moduł, czyli use Data::Dumper

I Słowo kluczowe use służy do importowania modułów

I Data::Dumper jest nazwą modułu. Możemy z niej odczytać, że to jest funkcja powiązana ze strukturami danych, jednak nie ma pakietu Data

(25)

Prosty przykład korzystania z modułu

1 use s t r i c t ;

my $ t e s t = {

t r e f = > [ 1 ,2 ,3 ,4 ]

5 };

p r i n t D u m p e r ( $ t e s t );

I Pojawi się błąd, dlaczego?

I Musimy najpierw zaimportować moduł, czyli use Data::Dumper

I Słowo kluczowe use służy do importowania modułów

I Data::Dumper jest nazwą modułu. Możemy z niej odczytać, że to jest funkcja powiązana ze strukturami danych, jednak nie ma pakietu Data

(26)

Prosty przykład korzystania z modułu

1 use s t r i c t ;

my $ t e s t = {

t r e f = > [ 1 ,2 ,3 ,4 ]

5 };

p r i n t D u m p e r ( $ t e s t );

I Pojawi się błąd, dlaczego?

I Musimy najpierw zaimportować moduł, czyli use Data::Dumper

I Słowo kluczowe use służy do importowania modułów

I Data::Dumper jest nazwą modułu. Możemy z niej odczytać, że to jest funkcja powiązana ze strukturami danych, jednak nie ma pakietu Data

(27)

Prosty przykład korzystania z modułu

1 use s t r i c t ;

my $ t e s t = {

t r e f = > [ 1 ,2 ,3 ,4 ]

5 };

p r i n t D u m p e r ( $ t e s t );

I Pojawi się błąd, dlaczego?

I Musimy najpierw zaimportować moduł, czyli use Data::Dumper

I Słowo kluczowe use służy do importowania modułów

I Data::Dumper jest nazwą modułu. Możemy z niej odczytać, że to jest funkcja powiązana ze strukturami danych, jednak nie ma pakietu Data

(28)

Prosty przykład korzystania z modułu

1 use s t r i c t ;

my $ t e s t = {

t r e f = > [ 1 ,2 ,3 ,4 ]

5 };

p r i n t D u m p e r ( $ t e s t );

I Pojawi się błąd, dlaczego?

I Musimy najpierw zaimportować moduł, czyli use Data::Dumper

I Słowo kluczowe use służy do importowania modułów

I Data::Dumper jest nazwą modułu. Możemy z niej odczytać,

(29)

Inny Przykład: moduł Getopt::Long

1 use s t r i c t ;

use G e t o p t :: Lo n g ;

my $ j e z y k = " p o l s k i ";

5 my $ w y k r z y k = 0;

G e t O p t i o n s (

" l a n g = s " = > \ $jezyk , e m p h = > \ $ w y k r zy k ,

10 );

if( $ j e z y k eq " p o l s k i ") { p r i n t " W i t a j s w i e c i e ";

}

15 e l s i f( $ j e z y k eq " a n g i e l s k i ") {

(30)

Importowanie funkcji z modułów

I Nie wszystkie funkcje są od razu dostępne tak jak Dumper

I Trzeba się wtedy do nich odwołać przez nazwę modułu (przestrzeń nazw)

1 use E n c o d e ;

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = E n c o d e :: e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = E n c o d e :: e n c o d e (" iso -8859 -2 ", $ st r );

I Drugi sposób to importowanie konkretnej funkcji za pomocą tablicy, która zawiera nazwy potrzebnych funkcji

1 use E n c o d e qw( e n c o d e _ u t f 8 e n c o d e );

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = e n c o d e (" iso -8859 -2 ", $ st r );

(31)

Importowanie funkcji z modułów

I Nie wszystkie funkcje są od razu dostępne tak jak Dumper

I Trzeba się wtedy do nich odwołać przez nazwę modułu (przestrzeń nazw)

1 use E n c o d e ;

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = E n c o d e :: e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = E n c o d e :: e n c o d e (" iso -8859 -2 ", $ st r );

I Drugi sposób to importowanie konkretnej funkcji za pomocą tablicy, która zawiera nazwy potrzebnych funkcji

1 use E n c o d e qw( e n c o d e _ u t f 8 e n c o d e );

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = e n c o d e (" iso -8859 -2 ", $ st r );

(32)

Importowanie funkcji z modułów

I Nie wszystkie funkcje są od razu dostępne tak jak Dumper

I Trzeba się wtedy do nich odwołać przez nazwę modułu (przestrzeń nazw)

1 use E n c o d e ;

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = E n c o d e :: e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = E n c o d e :: e n c o d e (" iso -8859 -2 ", $ st r );

I Drugi sposób to importowanie konkretnej funkcji za pomocą tablicy, która zawiera nazwy potrzebnych funkcji

1 use E n c o d e qw( e n c o d e _ u t f 8 e n c o d e );

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = e n c o d e (" iso -8859 -2 ", $ st r );

(33)

Importowanie funkcji z modułów

I Nie wszystkie funkcje są od razu dostępne tak jak Dumper

I Trzeba się wtedy do nich odwołać przez nazwę modułu (przestrzeń nazw)

1 use E n c o d e ;

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = E n c o d e :: e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = E n c o d e :: e n c o d e (" iso -8859 -2 ", $ st r );

I Drugi sposób to importowanie konkretnej funkcji za pomocą tablicy, która zawiera nazwy potrzebnych funkcji

1 use E n c o d e qw( e n c o d e _ u t f 8 e n c o d e );

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = e n c o d e (" iso -8859 -2 ", $ st r );

(34)

Importowanie funkcji z modułów

I Nie wszystkie funkcje są od razu dostępne tak jak Dumper

I Trzeba się wtedy do nich odwołać przez nazwę modułu (przestrzeń nazw)

1 use E n c o d e ;

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n "; my $ u _ s t r = E n c o d e :: e n c o d e _ u t f 8 ( $ s t r );

my $ i s o _ s t r = E n c o d e :: e n c o d e (" iso -8859 -2 ", $ st r );

I Drugi sposób to importowanie konkretnej funkcji za pomocą tablicy, która zawiera nazwy potrzebnych funkcji

1 use E n c o d e qw( e n c o d e _ u t f 8 e n c o d e );

my $ s t r = " B \ x { 1 1 9 } d \ x { 1 9 9 } j u t r o w d o mu \ n ";

(35)

Gdy nie mamy pożądanego modułu

1 use L i n g u a :: I d e n t i f y ; # n i e z a i n s t a l o w a n y m o d u l

Informacja o błędzie:

Can’t locate Lingua/Identify.pm in @INC (@INC contains: C:/P erl/site/lib C:/Perl/lib .) at -e line 1

(36)

Gdy nie mamy pożądanego modułu

1 use L i n g u a :: I d e n t i f y ; # n i e z a i n s t a l o w a n y m o d u l

Informacja o błędzie:

Can’t locate Lingua/Identify.pm in @INC (@INC contains: C:/P erl/site/lib C:/Perl/lib .) at -e line 1

(37)

Instalacja modułu za pomocą PPM

I W konsoli lub w ’Start > Uruchom ...’ wpisujemy PPM

I Lub: ’Wszystkie Programy > ActivePerl 5.x > Perl Package Manager’

I Gdy chcemy zainstalować pakiet ’Lingua::Identify’, to szukamy

’Lingua-Identify’

I Wynik zaznaczamy (Mark for install) i wykonujemy operację (Run marked actions)

I Po zakończeniu instalacji nie powinien już występować komunikat błędu

(38)

Instalacja modułu za pomocą PPM

I W konsoli lub w ’Start > Uruchom ...’ wpisujemy PPM

I Lub: ’Wszystkie Programy > ActivePerl 5.x > Perl Package Manager’

I Gdy chcemy zainstalować pakiet ’Lingua::Identify’, to szukamy

’Lingua-Identify’

I Wynik zaznaczamy (Mark for install) i wykonujemy operację (Run marked actions)

I Po zakończeniu instalacji nie powinien już występować komunikat błędu

(39)

Instalacja modułu za pomocą PPM

I W konsoli lub w ’Start > Uruchom ...’ wpisujemy PPM

I Lub: ’Wszystkie Programy > ActivePerl 5.x > Perl Package Manager’

I Gdy chcemy zainstalować pakiet ’Lingua::Identify’, to szukamy

’Lingua-Identify’

I Wynik zaznaczamy (Mark for install) i wykonujemy operację (Run marked actions)

I Po zakończeniu instalacji nie powinien już występować komunikat błędu

(40)

Instalacja modułu za pomocą PPM

I W konsoli lub w ’Start > Uruchom ...’ wpisujemy PPM

I Lub: ’Wszystkie Programy > ActivePerl 5.x > Perl Package Manager’

I Gdy chcemy zainstalować pakiet ’Lingua::Identify’, to szukamy

’Lingua-Identify’

I Wynik zaznaczamy (Mark for install) i wykonujemy operację (Run marked actions)

I Po zakończeniu instalacji nie powinien już występować komunikat błędu

(41)

Instalacja modułu za pomocą PPM

I W konsoli lub w ’Start > Uruchom ...’ wpisujemy PPM

I Lub: ’Wszystkie Programy > ActivePerl 5.x > Perl Package Manager’

I Gdy chcemy zainstalować pakiet ’Lingua::Identify’, to szukamy

’Lingua-Identify’

I Wynik zaznaczamy (Mark for install) i wykonujemy operację (Run marked actions)

I Po zakończeniu instalacji nie powinien już występować komunikat błędu

(42)

Przykladowy moduł niestandardowy Lingua::Identify

1 use s t r i c t ;

use L i n g u a :: I d e n t i f y qw( l a n g o f );

use D a t a :: D u m p e r ;

5 my $ t e x t = " T h i s is an E n g l i s h t e xt ";

my $ l a n g = l a n g o f ( $ t e x t );

p r i n t " \" $ t e x t \" is in $ l a n g \ n ";

my @ l a n g s = l a n g o f ( $ t e x t );

10 p r i n t D u m p e r (\ @ l a n g s );

my % l a n g s = l a n g o f ( $ t e x t );

p r i n t D u m p e r (\% l a n g s );

Cytaty

Powiązane dokumenty

I Słowo kluczowe sub poprzedza nazwę funkcji, którą ustalamy sami; nazwy powinny kojarzyć się działaniem tworzonej funkcji. I Polecenie return wewnętrz funkcji, natychmiast

◮ Hasz jest strukturą podobną do tablicy, ale zamiast indeksów liczbowych hasz używa kluczy.?. Co to

Marcin Junczys-Dowmunt Narzędzia informatyczne w językoznawstwie 18/24.. póki tablica @pokoj zawiera więcej niż

I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu. I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty

I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem.. Struktura danych może zajmować do 30 razy tyle pamięci

I Wszystkie dane wyjściowe konwertujemy po zakończeniu przetwarzania z kodowania wewnętrznego Perla do kodowania

I Tablica składająca się z samych kluczy tego hasza jest tablicą zawierająca tylko niepowtarzające się elementy z @tablica. Marcin Junczys-Dowmunt Narzędzia informatyczne

Najpierw wykonamy nasz program z poziomu wiersza poleceń komendą (o ile znajdujemy się w tym samym katalogu) perl hello.pl. Marcin Junczys-Dowmunt Narzędzia informatyczne