Strona 2 z 2 PierwszyPierwszy 12
Pokaż wyniki 11 do 19 z 19

Temat: [Perl] Kurs Perl - cz.3 - wyrazenia regularne, formaty, hashe...

  1. #11
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie Pomyłka.

    // Edit: Przeglądałem ten tutorial i odpisałem w tym temacie przez przypadek. Sorry.
    Ostatnio edytowane przez kokosoko : 04-29-2009 - 16:47 Powód: Napisanie postu z złym temacie.

  2. #12
    Zarejestrowany
    Jul 2009
    Postów
    9

    Domyślnie

    Witam od niedawna zacząłem uczyć się / czytać o Perlu. Przeglądając ten kurs (fajny ale niestety chyba już niekontynuowany niestety) wymundziłem taki kod do określania Klasy Ip i mam prośbę czy mógłby ktoś mi to sprawdzić i dać jakieś wskazówki co robię źle albo jak coś zrobić lepiej . Z góry dziękuje.

    Kod:
    #!/usr/local/bin/perl -w
    
    use strict;
    system(CLS);
    my $ip = "258.0.0.1";
    $ip =~ m/(\d+)\W+(\d+)\W+(\d+)\W+(\d+)/;
    
    if($1>255 or $2>255 or $3>255 or $4>255){
    print "blad";
    }
    if(($1 == 126 && $2==0 && $3==0 && $4==0) or ($1 < 126 && $1>=1 && $2>=0  && $3>=0 && $4>=0 )){
    print "JEST TO KLASA A";
    }
    if(($1>=128 && $2>=1 && $3>=0 && $4>=0) or ($1<=191 && $2<=254 && $3>=0 && $4>=0)){
    print "Jest to klasa B";
    }
    if(($1>=192 && $2>=0 && $3>=1 && $4>=0) or ($1<=223 && $2<=255 && $3<=254 && $4==0)){
    print "Jest to klasa C";
    }

  3. #13
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    Kod:
    #!/usr/local/bin/perl -w
    
    use strict;
    system(CLS);
    my $ip = "258.0.0.1";
    $ip =~ m/(\d+)\W+(\d+)\W+(\d+)\W+(\d+)/;
    
    if($1>255 or $2>255 or $3>255 or $4>255){
    print "blad, podano $ip";
    }
    if($1 == 126 && $2==0 && $3==0 && $4==0      or     $1 < 126 && $1>=1 && $2>=0  && $3>=0 && $4>=0 ){
    print "JEST TO KLASA A";
    }
     elsif($1>=128 && $2>=1 && $3>=0 && $4>=0      or      $1<=191 && $2<=254 && $3>=0 && $4>=0){
    print "Jest to klasa B";
    }
    elsif($1>=192 && $2>=0 && $3>=1 && $4>=0         or       $1<=223 && $2<=255 && $3<=254 && $4==0){
    print "Jest to klasa C";
    }
    dziala dodalem sobie printa, zeby miec pewnosc ze regex dziala i wywalilem zbedne nawiasy - tam gdzie byly zostawilem spacje[zaraz przy "or"]. aha no i elsif.
    btw, podajesz sciezke linuxowa, a uzywasz CLS?
    War, war never changes.

  4. #14
    Zarejestrowany
    Jul 2009
    Postów
    9

    Domyślnie

    Fakt z tą ścieżką dałem ciała..skopiowałem z jakiegoś kursu ..i skoro działało to nie przywiązywałem do tego uwagi A mam pytanie to moje wyrażenie
    Kod:
     m/(\d+)\W+(\d+)\W+(\d+)\W+(\d+)/
    nie da się zastąpić na coś w stylu,że z adresu np. 127.0.0.1 wyszukuje "." i to co jest pomiędzy "." zapisuje do zmiennej.. ?nie wiem czy dość jasno wytłumaczyłem o co mi chodzi

  5. #15
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    niestety nie rozumiem
    War, war never changes.

  6. #16
    Zarejestrowany
    Jul 2009
    Postów
    9

    Domyślnie

    To może tak...Teraz za pomocą m/(\d+)\W+(\d+)\W+(\d+)\W+(\d+)/ sprawdzam czy pasuje wzór: liczba non-word liczba....i te liczby zapisuje do zmiennych $1 $2 itd a mi chodzi o to czy można zrobić tak , że wzorem jest sama "." i zapisuje do zmiennej wszystko co nie pasuje do wzoru czyli jest różne od "." w naszym przypadku 127 itd. ...teraz jest jaśniej?

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

    Domyślnie

    Pojedyncza kropke mozna w regexach zapisac jako \. i to oznacza doslownie kropke. Jesli chcesz zlapac adresy IP to mozesz to zrobic na przyklad tak:

    /^((\d{1,3}\.){3}\d{1,3})$/ - to lapie caly IP
    /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ - to lapie 4 zmienne

    Teraz musisz jedynie sprawdzic czy $1 do $4 sa w zakresie <0; 255> i wiesz czy IP jest dobry...

    BTW. Wystarczy ze sprawdzisz czy sa <=255 bo \d dopasowuje cyfry, wiec nie da sie zrobic wartosci ujemnej jak na moj gust hihi :]
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  8. #18
    Zarejestrowany
    Jul 2009
    Postów
    9

    Domyślnie

    Pewnie masz racje wielkie dzięki. To na pewno nie koniec moich pytań co do Perla..ale wszystko w swoim czasie..Pozdrawiam.

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

    Domyślnie

    Jesli masz pytania to pytaj - z checia odpowiem na tyle na ile wiedza pozwoli.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Strona 2 z 2 PierwszyPierwszy 12

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, 00:50
  2. Odpowiedzi: 31
    Autor: 05-20-2008, 17:01
  3. Perl-echo.pl-smthg wrong?
    By Efraim in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 12
    Autor: 11-14-2007, 17:03
  4. bot irc PERL
    By jaszu in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 08-01-2007, 08:40
  5. Problem z Petla Perl
    By szpuni in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 11
    Autor: 07-03-2006, 15: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