Perl

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
(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)
  {nie, przerwe mam:P
+
  {
 
   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>;
$u = 'root';
+
print "Nazwa usera = $user";
+
print "Nazwa programu =  $u\n\n";
+
 
  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 ===
  
W tym miejscu chciałbym jedynie wyjaśnić co to jest zmienna leksykalna my, gdyż w przykładach poniżej będzie wiele razy użyta ta właśnie zmienna dlatego nie ma sensu pokazywania tutaj przykładów. Jeżeli nie zrozumiesz od razu o co chodzi to sie nie przejmuj poniżej będziesz miał jeszcze wiele razy na to szansę ;-) No to do pracy :-)
+
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'''  
+
'''HOWTO W TRAKCIE PISANIA'''  
 
<br /><google1 style="4"></google1>
 
<br /><google1 style="4"></google1>

Aktualna wersja na dzień 13:05, 6 wrz 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych