Strona 2 z 4 PierwszyPierwszy 1234 OstatniOstatni
Pokaż wyniki 11 do 20 z 32

Temat: [Perl] Kurs Perl - cz.2 - podstawy dobrego stylu, zmiene - c.d., petle...

  1. #11
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    Czyli wychodzi na to że jedyny praktyczny błąd jaki popełniłem to zła kolejność

    Kod:
    use strict;
    my $imie='hedvb';
    my $bonus='(oprocz hashow)';
    my $l=-1;
    
    sub pokaz { print "$imie wszystko rozumie $bonus ;P - mozemy leciec dalej :)\n" }
    
    foreach $l (-1..15) {
    	$l++;
    	if ($l == 0) { print "zero\n" } 
    	elsif ($l <=5) { print "malo\n" } 	
    	elsif ($l <=10) { print "sredno\n" }
    	elsif ($l <=15) { print "duzo\n" }
    }
    	pokaz;
    www.lingubot.pl - projekt sztucznej inteligencji.

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

    Domyślnie

    Wszystko gra, tylko $l++ nie ma tu sensu/zastosowania... jak petla dojdzie do konca, $l bedzie mialo przypisana kolejna wartosc z podanego zakresu...

    1. $l=-1, $l++ (daje 0), dostajemy tekst zero
    2. $l=0, $l++ (1), dostajemy 'malo'
    ...
    17. $l=15, $l++ (16) - nie dostajemy nic...

    dodaj teraz za wszystkimi elsif'ami linie:
    Kod:
    else { print "ZA DUZO\n" }
    to zobaczysz gdzie przelatujesz poza licznik.

    Generalnie kod jest sprawny i nie ma sie do czego przyczepic, poza tym ze nieco zaciemnia sprawe. Proponowalbym sie nie przyzwyczajac do takiego pisania bo pozniej na debugowaniu kodu masa czasu schodzi hihi.

    P.S.
    Wstawianie tabulacji na poczatku linii nie ma znaczenia dla kodu (jak w pythonie) - sluzy jedynie do poprawy czytelnosci programu.

    W nastepnej czesci zanim dojdziemy do regex'ow pokaze jeszcze jak mozna latwo wyswietlac dluzsze teksty a po regexach pokaze jak mozna robic ladnie formatowane tekstowe raporty - np proste tabelki w ascii
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #13
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    rzeczywiście to $l++ bez sensu, nawet nie wiem jak się tam znalazło ... co do tabów zawsze je robię żeby wszystko było przejrzyście - co raz więcej wiem co raz więcej rozumiem czekam na ciąg dalszy kursu
    www.lingubot.pl - projekt sztucznej inteligencji.

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

    Domyślnie

    Ok - w takim razie hashe wyjasnimy przy wyrazeniach regularnych - zrobimy sobie prosty parserek co palaszuje logi apacza i liczy ile requestow bylo z kazdego unikalnego adresu IP i ile adresow IP mamy w logu... a na koniec wyswietlimy ladnie raport w postaci tekstowej tabelki

    Pozniej bedziemy przerabiac nasz skrypt na rozne sposoby... dodamy moze baze danych, zrobimy do niego front-end CGI z uploadem plikow oraz jakies statystyki. Bedzie to bardzo proste - bardzo podstawowy kod, jak ktos bedzie mial ochote rozbudowywac to nie ma problemu. Zanim jednak do tego dojdziemy to jeszcze kawalek :P

    EDIT:
    Moge pozniej pokazac jak zbieram dane z serwerow do generowania wykresow (RRD) z ruchu jaki mam... i dostajemy wykres jak ponizej - tam jest spooooro hashow!

    Ostatnio edytowane przez TQM : 04-20-2008 - 00:21
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #15
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    Nie mam pojęcia o czym mówisz ale fajnie brzmi

    Jeszcze kilka takich małych pytanek - jak wyświetlać znaki specjalne z tablicy ASCII? I jakie mam polecenie na zakończenie danej procedury np if coś tam exit sub? I czy istnieje jakaś obsługa błędów np On error resume next :P
    www.lingubot.pl - projekt sztucznej inteligencji.

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

    Domyślnie

    Znajac kod znaku mozemy go uzyskac na kilka sposobow...

    print pack("C*", 97); # wyswietli male 'a'
    print unpack("C*", 'a'); #zwroci 97
    print unpack("H*", 'a'); #0x61 (wyswietli samo '61')
    print unpack("B*", 'a'); #01100001

    pierwszy parametr pack/unpack to szablon wg jakiego dzialamy, gwiazdka mowi aby zamienil tyle ile sie da... Ostatnio markossx podawal mi haslo do systemu w podobnej postaci wiec dostajac ciag 0 i 1 albo hexow bylo szybkie 'print pack' i juz wiadomo o co chodzi

    Drugie pytanie jak rozumiem chodzi o natychmiastowy powrot z funkcji do glownego kodu - najczesciej robi sie to przez return. W petlach sa oczywiscie dostepne next i last.

    Obsluga bledow? Hmmmm... next if (warunek); - moze takie cos masz na mysli?

    EDIT:
    perldoc -f pack
    perldoc -f unpack
    perldoc -f next

    EDIT 2:
    No tak... a printf/sprintf to zapomnialem
    perldoc -f printf oraz sprintf - dziala tak jak w C
    Ostatnio edytowane przez TQM : 04-20-2008 - 01:09
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #17
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    print pack("C*", 97); # wyswietli male 'a'
    print unpack("C*", 'a'); #zwroci 97
    print unpack("H*", 'a'); #0x61 (wyswietli samo '61')
    print unpack("B*", 'a'); #01100001
    O to mi właśnie chodziło Świetny sposób na szybkie przeliczanie systemu binarnego :PCo do błędów to myślałem też coś o jakiejś odgórnej definicji pomijania błędów (w razie błędu lecim dalej) no ale warunkami też można - no już Cię nie męczę czekam na cd
    www.lingubot.pl - projekt sztucznej inteligencji.

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

    Domyślnie

    Jeszcze jedno.... pisalem o printf i sprintf - proponuje doczytac http://perldoc.perl.org/functions/sprintf.html sprintf() zwraca wynik swojej pracy do zmiennej (jako skalar), printf() zwraca na STDOUT.

    Bardzo czesto oba przydaja sie do formatowania stringow, tylko zwroccie uwage na postac - nie podajemy dlugosci bufora... Najpierw podajemy format string, pozniej zmienne ktore maja byc podstawione w odpowiednie miejsca. Idealna sprawa do formatowania np liczb - potrzebujemy konkretny format zapisu albo konkretna precyzje.

    Na pewno wiele osob zapyta jak z buffer overflow'ami - powiem tak... jeszcze nie widzialem ani jednego w kodzie napisanym w Perlu!

    TIMTOWTDI
    Kod:
    print "Wg ASCII 97 to ", chr(97), "\n";
    Ostatnio edytowane przez TQM : 04-20-2008 - 11:20
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  9. #19
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    A jak to jest z ciągami formatującymi? Tak jak w pythonie Tzn. "Jakiś napis z liczbą %d."%(4214+8742)
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

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

    Domyślnie

    Jest opisane - link w moim poprzednim poscie... sa przyklady itd - RTFM.

    Kod:
    printf ("Temperatura otoczenia = %.2f\nWilgotnosc = %d%%\n", 
        rand(30), rand(50)+50);
    ... albo ja nie rozumiem pytania co tez jest jak najbardziej mozliwe.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy
    By TQM in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 22
    Autor: 10-27-2014, 01:50
  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