Typy zmiennych
W Perlu mamy 3 podstawowe typy zmiennych... podstawowe, tzn wszystko bedzie nalezec do ktoregos z tych typow - nic wiecej nie ma!
Aby korzystac ze zmiennych nie trzeba ich deklarowac wczesniej - mozna ich po prostu uzyc. Ma to swoje wady i zalety... zaleta - szybkosc programowania, wada - latwo o bledy (literufki?) a ich znalezienie zajmuje czas i irytuje, dlatego pokaze Wam jak tego uniknac!
Perl nie posiada mocnego typowania zmiennych. Nie mowimy wiec czy zmienna jest numeryczna (int, float, double, itp) czy tez tekstowa (char, string) - to nie ma znaczenia. Pierwszym typem jest skalar , ktory zawiera cos... to cos to moze byc tekst, moze byc znak, moze byc wartosc numeryczna z dowolna precyzja. Skalar zawsze jest oznaczany tak samo.
Kod:
$skalar = 123.45;
$skalar2 = "JAPH";
$skalar3 = "Cena: $skalar";
$skalar4 = "Jestem $skalar2";
$skalar5 = 3 * $skalar;
$skalar6 = "Cena brutto", 1.22*$skalar;
Jak widac, Perl wie w jakim kontekscie uzywamy skalarow - wszelkie konwersje typow jakie znacie z innych jezykow tutaj sa robione automatycznie w zaleznosci od kontekstu (DWIM - rob to o czym ja mysle). Na razie zostawmy to jak jest... szczegoly i kruczki skladni omowimy dalej.
Tablica jest drugim typem zmiennej. Tablice zapisujemy:
Kod:
$kraj = "USA"; # to jest akurat skalar hihi
@tablica = ('Osoba: Jan Kowalski', "Kraj: $kraj", 'Koszt przesylki:$20');
print "$tablica[0]\n"; #Osoba: Jan Kowalski
print "$tablica[1]\n"; #Kraj: USA
print "$tablica[2]\n"; #Koszt przesylki: $20
Tablica jest zawsze jedno-wymiarowa a elementy numeryjemy od 0 w gore ku koncowi tablicy. Uzywajac symbolu @ mowimy o calej tablicy ale pojedynczy element tablicy zapisujemy ze znakiem $ i indeksem pola (w koncu pole tablicy to skalar). Warto tez zauwazyc ze zastosowalem cudzyslowy i apostrofy do ograniczenia tekstu. W polu 1 $kraj zostalo podstawione i wyswietlone jako tekst, w polu 2 $20 nie jest nazwa zmiennej ale ciagiem znakow... Roznica jest taka, ze podajac cos w cudzyslowiu zmienne zostana podstawione a w apostrofach nie. Pole 2 (ostatnie) mozna bylo tez zapisac jako "Koszt przesylki: \$20" i byloby to samo.
Tablice mozna sortowac, robic na nich push, pop, shift, unshift itd. Do tego dojdziemy...
Hash - tablica ktora nie trzyma porzadku
Hash to specyficzna struktura - wyobrazcie sobie worek w ktorym sa rzeczy (glownie skalary) do ktorych sa przyczepione etykietki (tzw. klucze) i aby wyciagnac z worka rzecz musimy znac jej etykietke (klucz).
Kod:
%hash = ( 'klucz' => 'wartosc', 'klucz2' => 'wartosc2');
$hash{klucz3} = 'wartosc3';
$hash{"klucz4"} = 'wartosc4';
$klucz = 'adres_ip';
$hash{$klucz} = '127.0.0.1';
$ip='10.0.0.1';
$hostname{"IP_$ip"} = 'gw.localnet.lan';
W hashu nie ma kolejnosci ale jesli chcemy mozemy wyciagac elementy w kolejnosci alfabetycznej. To bardzo ciekawa struktura! Wiecej omowimy na przykladach pozniej.
Nieco bardziej skomplikowana sprawa...
Zmienne mozna laczyc - juz wiecie ze tablica (array) zawiera skalary tak samo jak hash... ale mozemy to zmienic. Mozemy stworzyc tablice wielowymiarowe jako tablice tablic
Kod:
$tablica[2][6] = 'element 2x6';
tablice hashy
Kod:
$tablica[5]{adres_ip} = '10.0.0.1';
itd... rowniez w druga strone - hash tablic i hash hashy.
Jest to tylko kwestia naszej fantazji i tego co chcemy osiagnac. Bedziem o tych konstrukcjach mowic pozniej.
Na razie zmiennych tyle - niebawem przejdziemy do zmiennych tzn 'magicznych' lub 'domyslnych'. Perl posiada calkiem sporo zmiennych, ktore definiuje sam - np domyslna zmienna przechowujaca element ktory obrabiamy w trakcie petli itd. Do tego dojdziemy po przerobieniu petli.
Lektura
Jesli ktos chce poczytac we wlasnym zakresie i wyprzedzic nasz kurs, to zachecam - dokumentacja jest dostepna w systemie (perldoc perldoc, man perldoc, man perlfunc, itd...) lub on-line http://perldoc.perl.org/perl.html
Ten kurs nie bedzie zawieral niczego czego by nie bylo w dokumentacji, wiec jesli czegos nie rozumiecie oczekuje od Was, ze zanim zadacie pytanie zajrzycie do dokumentacji a dopiero pozniej omowicie swoje watpliwosci - po to jest dokumentacja by z niej korzystac.
ZADANIE:
... bedzie w nastepnych czesciach kursu, gdy omowimy podstawowe operacje na zmiennych...