Perl
Z wiki linux-user
(Utworzył nową stronę „Category:Programowanie == Perl == '''Perl''' (''Practical Extraction and Report Language''), twórcą języka jest Larry Wall. Perl jest bardzo często wykorzyst...”) |
m |
||
Linia 84: | Linia 84: | ||
print "\n"; | print "\n"; | ||
print "10 i 10 rowna sie $zmienna1"; | print "10 i 10 rowna sie $zmienna1"; | ||
− | + | ||
=== Logiczne operatory porównania === | === Logiczne operatory porównania === | ||
Linia 134: | Linia 134: | ||
} | } | ||
− | Możliwe jest również zagnieżdżanie konstrukcji warunkowej if np | + | Możliwe jest również zagnieżdżanie konstrukcji warunkowej '''if''' np |
if (dane <= dane2) | if (dane <= dane2) | ||
− | |||
{ | { | ||
− | |||
if ( jakis wynik < inny wtynik ) | if ( jakis wynik < inny wtynik ) | ||
− | |||
{ | { | ||
− | |||
jeszcze inny wynik | jeszcze inny wynik | ||
− | |||
} | } | ||
− | |||
.... | .... | ||
− | |||
} | } | ||
− | |||
else | else | ||
− | |||
... | ... | ||
Linia 164: | Linia 155: | ||
#! /usr/bin/perl | #! /usr/bin/perl | ||
print "Podaj liczbe od 1 do 9:"; | print "Podaj liczbe od 1 do 9:"; | ||
− | $liczba_usera = ; | + | $liczba_usera = <STDIN>; |
+ | chomp($liczba_usera); | ||
$automat = '5'; | $automat = '5'; | ||
− | print "Liczba uzytkownika = $liczba_usera"; | + | print "Liczba uzytkownika = $liczba_usera \n"; |
print "Liczba automatu = $automat\n\n"; | print "Liczba automatu = $automat\n\n"; | ||
if ($automat == $liczba_usera) | if ($automat == $liczba_usera) | ||
− | { | + | { |
print "Zgadłeś liczbę automatu $automat \n"; | print "Zgadłeś liczbę automatu $automat \n"; | ||
} | } | ||
Linia 183: | Linia 175: | ||
#! /usr/bin/perl | #! /usr/bin/perl | ||
print "Podaj login:"; | print "Podaj login:"; | ||
− | $user = | + | $user = <STDIN>; |
− | + | ||
− | + | ||
− | + | ||
chomp($user); | chomp($user); | ||
+ | $u = 'root'; | ||
+ | print "Nazwa usera = $user \n"; | ||
+ | print "Nazwa użytkownika root = $u\n\n"; | ||
if ($u eq $user) | if ($u eq $user) | ||
{ | { | ||
Linia 198: | Linia 190: | ||
W celu testowym możemy zobaczyć co się stanie jeśli odpalimy ten sam program wymazując tylko linijkę chomp($user); | W celu testowym możemy zobaczyć co się stanie jeśli odpalimy ten sam program wymazując tylko linijkę chomp($user); | ||
+ | |||
+ | ==== Operator "diamentowy" ==== | ||
+ | Pobieranie danych z operatora "diamentowego" ''<>'' (znak mniejszości i większości) umożliwia stworzenie programu, który podczas uruchamiania pobierze dodatkowe argumenty ze standardowego wejścia znaczy klawiatury np | ||
+ | ./program test1 test2 | ||
+ | ''test1'' oraz ''test2'' to istniejące pliki. Przykład poniżej powinien rozjaśnić całą zabawę z operatorem diamentowym w perlu. | ||
+ | #! /usr/bin/perl | ||
+ | while (defined($line = <>)) { | ||
+ | chomp($line); | ||
+ | print "Wczytałem wiersz $line \n"; | ||
+ | } | ||
+ | należy pamiętać aby operator ''<>'' użyć w programie tylko jeden raz w innym przypadku pojawią się błędy. | ||
=== Pętla while === | === Pętla while === | ||
Linia 442: | Linia 445: | ||
=== Zmienna leksykalna my === | === Zmienna leksykalna my === | ||
− | + | Zmienne leksykalne '''my''' używamy wtedy gdy, chcemy powiedzieć kompilatorowi, że dana zmienna powinna być prywatna lub mieć ograniczony zasięg np jedynie do danego bloku. W tym momencie żadna inna zmienna o tej samej nazwie nie będzie mogła być zastąpiona inną wartością, która przechowywana jest w zmiennej o tej samej nazwie. Co lepsze taka zasada działa również na odwrót tzn, że żadna inna zmienna nie zmieni tak zadeklarowanej zmiennej w danym bloku. Przykładowy programik przedstawiam poniżej | |
− | Zmienne leksykalne my używamy wtedy gdy, chcemy powiedzieć kompilatorowi, że dana zmienna powinna być prywatna lub mieć ograniczony zasięg np jedynie do danego bloku. W tym momencie żadna inna zmienna o tej samej nazwie nie będzie mogła być zastąpiona inną wartością, która przechowywana jest w zmiennej o tej samej nazwie. Co lepsze taka zasada działa również na odwrót tzn, że żadna inna zmienna nie zmieni tak zadeklarowanej zmiennej w danym bloku. | + | |
+ | #! /usr/bin/perl | ||
+ | print "Podaj jakieś imie:"; | ||
+ | $what = <STDIN>; | ||
+ | chomp($what); | ||
+ | my @names = qw/ kasia slawek ania piter natalia adam jacek kuba /; | ||
+ | my $result = &which_elements_is($what, @names); | ||
+ | sub which_elements_is { | ||
+ | my ($what, @array) = @_; | ||
+ | foreach (0..$#array) { | ||
+ | if ($what eq $array[$_]) { | ||
+ | return $_; | ||
+ | } | ||
+ | } | ||
+ | -1; | ||
+ | } | ||
+ | if ($result == 1) { | ||
+ | print "Imię $what zostało odnalezione w bazie\n"; | ||
+ | } else { | ||
+ | print "Imię $what NIE zostało odnalezione w bazie \n"; | ||
+ | } | ||
+ | |||
+ | Jak można łatwo zauważyć w tym krótkim programiku występują dwie stałe o nazwie $what, które działają koło siebie bez żadnych błędów. Tak czy inaczej pisząc w ten sposób program stał się mało czytelny. | ||
+ | |||
+ | === Tablica asocjacyjna === | ||
+ | Tablica asocjacyjna jest strukturą danych, która może przechowywać dowolne wartości i zwracać je na żądanie programisty. Indeksowanie wartości odbywa się za pomocą nazw (kluczy) a nie jak to miało miejsce w zwykłych tablicach za pomocą indeksów. Mały przykład użycia | ||
+ | #! /usr/bin/perl | ||
+ | $nazwa1{"kowalski"} = "Jan"; | ||
+ | nazwa1{"nowak"} = "Adam"; | ||
+ | foreach $ludzie (qw< nowak kowalski >) { | ||
+ | print "Słyszałem o rodzinie $ludzie $nazwa1{$ludzie}. \n"; | ||
+ | } | ||
+ | |||
+ | |||
− | + | '''HOWTO W TRAKCIE PISANIA''' | |
<br /><google1 style="4"></google1> | <br /><google1 style="4"></google1> |