Pokaż wyniki 1 do 10 z 23

Temat: [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy

    Od czegos trzeba zaczac... najelpeij od poczatku

    Podstawowe informacje – co jak i dlaczego?
    Autorem Perl’a jest Lary Wall, ktory rozpoczal prace nad jezykiem w 1987 roku - wersja 1.0 zostala opublikowana 8 grudnia 1987. PERL oznacza Practical Extraction and Reporting Language. Nie bez powodu jezyk ten jest okreslany jako „tasma sklejajaca Internet” albo „Perl: the Swiss Army Chainsaw of Programming Languages” (cos jak “szwajcarska pila lancuchowa wsrod jezykow programowania”). Dlaczego tak jest okreslany? Po prostu jezyk daje ogromna swobode programowania oraz TIMTOWTDI (there is more than one way to do it) – ten sam rezultat mozna osiagnac na rozne sposoby.

    Garsc faktow:
    - stabilny jezyk programowania, kod dziala bez zmian na wielu platformach
    - jest uzywany w wielu krytycznych obszarach gospodarki (rowniez malych firmach i u osob prywatnych)
    - jest jezykiem Open Source – licencja Perl Artistic License lub GPL
    - wspiera caly szereg systemow operacyjnych (lista http://www.cpan.org/ports/index.html)
    - posiada najlepsze funkcje C, awk, sed, sh, BASIC’a i wielu innych
    - stosuja DBI bardzo latwo mozna korzystac z baz danych (MySQL, PostrgreSQL, Oracle, itp)
    - dziala z HTML, XML oraz innymi jezykami opisowymi
    - obsluguje Unicode
    - jest zgodny z Y2K (zawsze byl)
    - mozna programowac strykturalnie lub obiektowo
    - mozna uzywac bibliotek z C/C++ poprzez XS lub SWIG
    - tysiace gotowych modulow dostepne poprzez CPAN
    - jest wbudowany w wiele systemow zintegrowanych
    - itd... lista jest bardzo dluga!

    Skad wziasc perla?
    Prawie wszystkie dystrybucje Linuxa zawieraja interpreter (kodu sie nie kompiluje, Perl to jezyk interpretowany). Dla Windows polecam ActivePerl (www.activestate.com) – mozna pobrac za darmo, nie trzeba tez podawac danych gdy o to zapytaja – nizej jest link do downloadu... Czy masz Linuxa, BSD, Solarisa, Windows a nawet Psion’a (tak tak!) Perl bedzie dzialal tak samo.

    Na poczatek tyle nam wysarczy... dodatkowe informacje bede wplatal po kolei – nie mam zamiaru pisac ksiazki tutaj. Moim celem jest pokazac jak prosto i szybko mozna zaczac pisac pierwsze programy ktore po prostu robia to czego sie od nich oczekuje (tzn DWIM – do what I mean).


    Hello?
    Kod:
    perl -e 'print "Hello world!\n";'
    no i juz mamy naszego Hello World w sumie bez grzebania w plikach a uzywajac jedynie wiersza polecen. Tu na prawde nie ma zadnej filozofii.

    c.d.n.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    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...
    Ostatnio edytowane przez TQM : 04-19-2008 - 15:39
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Wszelkie uwagi i pytania mile widziane, jednak prosilbym o jedno...

    Piszac kolejne czesci bede wrzucal po kawalku i jesli pod postem jest napisane "c.d.n" to znaczy ze tam cos jeszcze bedzie, wiec prosze wstrzymac sie do ostatniego postu w danej czesci. W ten sposob unikniemy wrzucania tekstu miedzy kolejne czesci opisu. Dlugosc postow jest limitowana wiec nie moga byc za dlugie i stad taki problem
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  4. Domyślnie

    Rozumiem wszystko aż do hashów Muszę się jakoś przez to przegryść...
    A czy czasem brak deklaracji typów zmiennych np. boolean, integer, long nie obciąża bardziej pamięci?
    www.lingubot.pl - projekt sztucznej inteligencji.

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Dokladnie nie wiem ale szczerze mowiac piszac aplikacje to nie ma wielkiego znaczenia - nie wiem co siedzi wewnatrz perla ale kod bardzo ladnie sie optymalizuje sam w sobie podczas pracy (interpreter za to odpowiada), wiec majac skalar ktory ma wartosc 0 lub 1 mozna go uzywac w wyrazeniach true/false... Tak samo jesli zmienna jest zdefiniowana albo ma wartosc 'undef'.

    To wszystko stanie sie sporo jasniejsze gdy przerobimy pare przykladow. Na razie hash bedzie niektorych straszyl po nocach ale sami zobaczycie niebawem ze to bardzo przydaty stwor
    Dzieki niemu mozna bardzo ladnie opisac sobie dane i banalnie latwo sie do nich odwolywac... Przy raportowaniu wszelkiej masci to jest jeden z kluczy do sukcesu.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  6. Domyślnie

    ciemny jestem
    #!/usr/bin/perl -w
    use strict;
    perl -e 'print "Hello world!\n";'
    jak to odpalić albo skompilować w komodo? Przyzwyczaiłem się do run albo make ale z tego co widze komodo to tylko edytor...
    Ostatnio edytowane przez hedVB : 04-19-2008 - 17:06
    www.lingubot.pl - projekt sztucznej inteligencji.

Podobne wątki

  1. Tablica dwuwymiarowa w Perl a polecenie PUSH.
    By Bzyk in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 02-08-2008, 12:05
  2. Perl-echo.pl-smthg wrong?
    By Efraim in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 12
    Autor: 11-14-2007, 18:03
  3. bot irc PERL
    By jaszu in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 08-01-2007, 09:40
  4. Tworzenie katalogow.perl.foreach.
    By riczard_nikson in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 01-19-2007, 22:54
  5. Problem z Petla Perl
    By szpuni in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 11
    Autor: 07-03-2006, 16:23

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj