Porady
FAQ
Słownik
Sonda
-- LICZNIK --
Licznik: 84293095

PERL - skalary i tablice
#!/usr/bin/perl
Nie, nikomu nic się nie pomyliło ;-)
Powyższy napis to pierwsza linijka każdego programu w Perlu - wskazuje ona na katalog z interpreterem Perl'a. Oczywiście, bez tej linijki skrypt i tak się uruchomi i wykona - ale my przyjmujemy, że jest ona niezbędnym elementem każdego poprawnie napisanego programu.
Może się ona różnić w różnych systemach unixopodobnych (gdyż tylko dla tych systemów ma zastosowanie...). Aby dowiedzieć się gdzie znajduje się Perl, należy wpisać :
which perl
Każdy program w Perlu jest zwykłym plikiem tekstowym. Praktycznie nie ma znaczenia jakie rozszerzenie nadamy takiemu plikowi, ale my przyjęliśmy zasadę, że programy/skrypty w Perlu mają rozszerzenie .pl - np. program.pl
Perl jest językiem interpretowanym - czyli do jego uruchomienia i wykonania niezbędny jest interpreter języka.
perl nazwa_programu
Nazwę naszego programu podajemy jako parametr polecenia perl. Polecamy stosowanie jednego z dwu podanych przełączników interpretera - dzięki temu łatwiej jest znaleźć błąd, gdy wystąpi.

perl nazwa_skryptu -w
Wyświetla ostrzeżenia o zmiennych, które są tylko raz wymienione, o zmiennych, które nie zostały użyte (pojawiły się w programie zanim jeszcze nadano im jakąkolwiek wartość).

perl nazwa_skryptu -c
Interpreter sprawdzi składnię skryptu i wypisze informacje o błędach (jeśli je znajdzie). W odróżnieniu od przełącznika -w, przy użyciu -c skrypt nie będzie uruchomiony.
Oczywiście, skrypty możemy uruchamiać bez polecenia perl - w tym celu, po napisaniu programu i zapisaniu go w pliku tekstowym musimy nadać naszemu plikowi atrybut wykonywalności :
chmod a+x nazwa_pliku (opis polecenia chmod znajdziecie w dziale poświęconym CGI)

Program uruchamiamy, wpisując go z linii komend :
nazwa_skryptu lub
./nazwa_skryptu
Właściwie na temat uruchamiania skryptów to wszystko. Teraz zajmiemy się typami danych Perl'a. Jako, że temat jest dość obszerny, najpierw je opiszemy (trochę teorii nikomu nie zaszkodziło) a dopiero potem pokażemy jak ich używać w praktyce.
Perl zawiera wszystkie podstawowe typy danych - od prostych zmiennych do złożonych tablic asocjacyjnych, nazywanych haszami (od angielskiego hash). W odróżnieniu od innych języków w Perlu nie trzeba deklarować zmiennych ani typu tych zmiennych (w Perlu zmienne nie mają typu). Jest to niesamowicie wygodne z punktu widzenia programisty, gdyż pozwala mu skupić się na konkretnym rozwiązaniu. Należy pamiętać, że Perl rozpoznaje wielkość liter - $skalar i $Skalar to dwie różne zmienne.
Podstawowe struktury danych


Na samym początku omówimy tylko pierwsze trzy. W kolejnych częściach tego kursu opiszemy procedury i wraz z nimi typ typeglob.
Skalar jest najbardziej elementarnym elementem języka Perl. Skalary przyjmują pojedyncze wartości - liczby lub napisy.
$skalar = "To jest napis";
$skalar = 150;
Liczby możemy określać przy użyciu kilku formatów :
12345 - liczba całkowita
123.45 - liczba rzeczywista
5.03E50 - liczba rzeczywista
0x7A lub 0x7a - liczba szesnastkowa
0177 - liczba ósemkowa (zero na początku oznacza liczbę ósemkową)
Jak już wcześniej wspomniano - zmiennym w Perlu nie trzeba określać typu, który jest rozpoznawany po kontekście wyrażenia. Skalary można łączyć ze sobą i dzięki temu otrzymywać bardziej złożone struktury danych - tablice oraz hasze.

Tablica w Perlu to uporządkowana lista skalarów (skalar jest pojedyńczą wartością - napisem lub liczbą). Dostęp do wartości skalara uzyskujemy po podaniu jego położenia w liście. Taka lista może zawierać liczby, napisy, odwołania do innych list. Żeby przypisać jakąś listę do tablicy wystarczy zgrupować zmienne, które mają pojawić się w tablicy :
@tablica = ("element", "kolejny element", "n-ty element");
Indeksy tablic zaczynają się od zera (pierwszy element na liście ma numer 0, drugi element ma numer 1, i tak dalej). Aby zatem uzyskać dostep do drugiego elementu w tablicy, należy użyć indeksu:
$tablica[1]; (w naszym przypadku będzie to "kolejny element").
Aby zmienić zawartość jakiegokolwiek elementu wystarczy temu elementowi przypisać nową wartość:
$tablica[0] = 'inny element';
Ponieważ pojedyńczy element listy jest skalarem, zatem należy go poprzedzić znakiem dolara - $.
Możemy tworzyć tablice zawierające wybrane elementy innej tablicy:
@pierwsza_tablica = @druga_tablica[3,7,9..11];
W powyższym przypadku @pierwsza_tablica składać się będzie z elementów o indeksach: 3,7,9,10,11.
Jeżeli użyjemy tablicy w kontekście skalarnym, otrzymamy długość tablicy (ilość elementów, z jakiej składa się tablica):
$ile = @pierwsza_tablica;
Wartość zmiennej $ile będzie wynosiła 5, gdyż ta tablica składa się z 5 elementów.
Teoretycznie można to wykorzystać, aby "dostać" się do ostatniego indeksu tablicy. Mając jej długość, indeks ostatniego elementu otrzymamy po odjęciu jedynki od długości :
$ostatni = @pierwsza_tablica[$ile-1];
Na całe szczęście, Perl posiada funkcję, która zwraca ostatni indeks danej tablicy - $# :
$ostatni = $#pierwsza_tablica;
W powyższym przypadku, wartość zmiennej $ostatni będzie wynosiła 4, gdyż to właśnie jest ostatni indeks naszej pięcioelementowej tablicy (przypominamy, że indeksy zaczynają się od 0).

Hasz (hash) jest, w odróżnieniu od tablicy, nieuporządkowanym zbiorem skalarów - w przypadku zwykłych tablic, indeksy muszą być liczbami, natomiast w przypadku haszy, indeksowanie może odbywać się w dowolny sposób. Dostęp do wartości uzyskujemy po podaniu napisu skojarzonego z danym skalarem. Z tego powodu hasze nazywane są także tablicami asocjacyjnymi. Hasze zaczynają się od symbolu procenta - %.
%hasz = ('imie', 'Andrzej', 'nazwisko', 'Zawadka', 'email', 'andrzej@energosystem.com.pl');
Jest to dość nieczytelny zapis. Można to samo zapisać używając specjalnego separatora "=>". Ten sam hasz będzie wyglądał następująco :
%hasz = (
'imie' => 'Andrzej',
'nazwisko' => 'Zawadka',
'email' => 'andrzej@energosystem.com.pl'
);
Pojedyńczą wartość w haszu możemy zmieniać identycznie jak w przypadku zwykłej tablicy.
$hasz{'imie'} = 'Andrzej';
Pojedyńczy element takiej tablicy wybierany jest za pomocą klucza (umieszczamy go w nawiasie klamrowym - {klucz}).
Aby zatem uzyskać dostęp do np. pierwszego elementu w naszym haszu, napiszemy:
$hasz{'imie'}; (w naszym przypadku wartością zwróconą będzie : Andrzej).
Ponieważ pojedyńczy element listy asocjacyjnej jest skalarem, zatem nalezy go poprzedzić znakiem $.
Aby wyświetlić wszystkie klucze z danej tablicy asocjacyjnej należy użyć funkcji keys :
print keys(%hasz);
W przypadku, gdy tablicą %hasz była tablica zdefiniowana wcześniej, otrzymamy :
email imie nazwisko
Aby wyświetlić wartości z danej tablicy asocjacyjnej, należy użyć funkcji values :
print values(%hasz);
W tym przypadku otrzymamy :
andrzej@energosystem.com.pl Andrzej Zawadka

Tyle teorii. Na zakończenie pierwszy program - równie banalny co "Witaj Świecie!" ;-)
#!/usr/bin/perl
for ($licznik=1; $licznik<16; $licznik++)
{
print "Wykonałem się $licznik razy!\n";
}
$wynik = 20 + 10;
print "\n 20 + 10 = $wynik\n";
$wynik = 2 ** 5;
print "2 do potegi 5 = $wynik\n";
$wynik = 10/345;
print 'Zmienna $wynik = ', "$wynik";

Cofnij...

Opracowanie
Zawadka Andrzej
Energosystem Web Studio

Ciekawe strony WWW
Tłumacz przysięgły angielski Gliwice
Gwarantujemy najwyższą jakość tłumaczeń, terminowość, poprawność merytoryczną, leksykalną i gramatyczną, poufność oraz profesjonalny wygląd i redakcję dokumentów.
Mayoral ubranka
Sklep LULA - odzież dziecięca prowadzony jest przez firmę Krywax s.c. Jesteśmy firmą rodzinną działającą w branży dziecięcej od 1985 roku. Prawie 30-letnie doświadczenie pozwala nam dobrze zrozumieć oczekiwania i potrzeby naszych najmłodszych klientów.

skrypty skrypty