[08:13pm] <@mulander> Witam ponownie na trzeciej czesci wykladow o Perl'u ;)
[08:13pm] <@mulander> jak zwykle w malym gronie a pod koniec zapewne jeszcze mniejszym :P
[08:14pm] <@mulander> Dzisiaj mamy wplanie przerobic dwa zagadnienia, o ile wszystko pojdzie sprawnie to powinno to nam sie udac.
[08:14pm] <@mulander> na pierwszy ogien pojda tablice asocjacyjne czyli hashe
[08:14pm] <@mulander> a jak czas pozwoli to przerobimy instrukcje warunkowe i petle.
[08:15pm] <@mulander> I na tym koncze przynudne wstepy i przechodze do bardziej nudnej tresci ^^
[08:15pm] <@mulander> Poznalismy juz dwa typy zmiennych, zmienne skalarne oznaczane znaczkiem $ oraz tablice oznaczane znaczkiem @
[08:15pm] <@mulander> poniewaz programisci perla lubia takie znaczki to stwierdzili ze dwa to stanowczo zamalo i wymyslili sobie uzycie jeszcze jednego.
[08:16pm] <@mulander> ale o tym znaczku za chwile, najpierw troche teorii :P
[08:16pm] <@mulander> I krociotkie przypomnienie.
[08:16pm] <@mulander> Zmienna skalarna: przechowuje nieokreslony rodzaj danych - moze to byc ciag znakow, liczba i tak dalej.
[08:17pm] <@mulander> Tablica: to uporzadkowane dane skalarne, czyli na upartego mozemy powiedziec ze tablica sklada sie ze zmiennych skalarnych ponumerowanych od zera w gore.
[08:17pm] <@mulander> Tablica Asocjacyjna to pewien rodzaj zmiksowania tych dwoch struktur ;)
[08:18pm] <@mulander> Jako ze programisci perla sa leniwi, to stwierdzili ze zamiast pisac associative array, wygodniej sie pisze hash :P i my tez jestesmy leniwi wiec tak samo bedziemy robic.
[08:18pm] <@mulander> tak wiec hash: to zmienna ktora przechowuje zestaw par kluczy i wartosci.
[08:18pm] <@mulander> wyjasnijmy to sobie bo moze to byc dla niektorych nie zrozumiale.
[08:19pm] <@mulander> do hasha wrzucamy klucz i wartosc, klucz to ciag znakow dzieki ktoremu nam latwiej odnosic sie do danego elementu hasha ( nie musimy zgadywac numerka tak jak to jest przy tablicy ;) ) tylko wpisujemy ciag ktory wczesniej zdefiniowalismy
[08:20pm] <@mulander> zas interpreter wie ze dana parka jest ze soba powiazana, i kiedy poprosimy go o wartosc danego klucza to on bez wiekszych problemow nam ja odnajdzie i zwroci.
[08:20pm] <@mulander> mozemy sobie pomyslec jak wygladalby taki przykladowy hash
[08:21pm] <@mulander> zalozmy ze robimy liste najlepszych wynikow z zadanek ;)
[08:21pm] <@mulander> jezeli chwilke pomyslimy to dojdziemy do wniosku ze najlepszym wyjsciem bedzie podanie imion osob ktore sa na top10 jako kluczy
[08:21pm] <@mulander> i kazdy klucz bedzie wskazywal na ilosc punktow zdobyta przez dana osobe
[08:22pm] <@mulander> wtedy latwo i szybko mozemy poznac wyniki danej osoby.
[08:22pm] <@mulander> ale ze teoria jest zwykle zbyt nudna i malo zrozumiala ;) zaczne od drobniutkiego przykladu
[08:22pm] <@mulander> ale to troszeczke pozniej najpierw pytanka :P
[08:22pm] <@mulander> hmm rozumiecie narazie ?
[08:23pm] narazie gites
[08:23pm] jedziesz dalej
[08:23pm] czekaj
[08:23pm] <@mulander> tak ?
[08:23pm] czy jeden klucz moze miec kilka tych parametrow?
[08:23pm] np. bedzie kilka dziedzin zagadek
[08:23pm] matematyka i fizyka
[08:24pm] i do imienia beda przypisane dwa wyniki
[08:24pm] moze tak byc?
[08:24pm] <@mulander> to potrzebujesz hasha zawierajacego tablice ;)
[08:24pm] <@mulander> da sie cos takiego zrobic dzieki referencja ;)
[08:24pm] rozumiem, no to dawaj dalej ;)
[08:24pm] <@mulander> mozesz miec nawet hash zawierajacy hashe zawierajace tablice skladajace sie z hashy ktore zawieraja hashe
[08:24pm] <@mulander> i tak dalej :>
[08:24pm] heh
[08:25pm] <@mulander> ale narazie nie zaprzatajcie sobie glowy referencjami :P
[08:25pm] <@mulander> dodam jeszcze tylko kilka rzeczy ktore powinniscie wiedziec o hashach.
[08:25pm] <@mulander> hmm bede pisal haszach :P
[08:25pm] <@mulander> 1. klucze w hashu musza byc unikatowe, czyli nie mozemy miec dwoch identycznych kluczy.
[08:26pm] <@mulander> wartosci jednak nie maja takiej restrykcji ;)
[08:26pm] <@mulander> kolejna wazna sprawa, dane przechowywane w haszu sa przechowywane w nieokreslonej kolejnosci.
[08:26pm] <@mulander> to znaczy interpreter je sobie uklada tak by miec do nich szybki dostep
[08:27pm] <@mulander> ale to sie praktycznie nigdy nie bedzie zgadzac z kolejnoscia z jaka my te dane wprowadzilismy
[08:27pm] <@mulander> mozna uzywac modulow takich jak IxHash albo DB_file by wymusic pewna kolejnosc ale bardzo duzym kosztem wydajnosci.
[08:28pm] <@mulander> mozna sobie hasha posegregowac wyciagajac z niego dane ale o tym pozniej.
[08:29pm] <@mulander> przehodzimy teraz do konkretnych rzeczy zwiazanych z perlem.
[08:29pm] <@mulander> hash w perlu ma przyporzadkowany znaczek %
[08:30pm] <@mulander> sposob nazywania jest taki jak przy innych zmiennych
[08:30pm] <@mulander> najprostsza deklaracja zmiennej typu hash to:
[08:30pm] <@mulander> my %hash;
[08:30pm] <@mulander> jednak moze sie zdarzyc ( dosyc czesto ) ze juz przy samej deklaracji bedziemy chcieli przypisac jakies wartosci do hasha.
[08:30pm] <@mulander> mozemy to zrobic na dwa sposoby ( trzy ale o trzecim za chwile )
[08:31pm] <@mulander> sposob 1:
[08:31pm] <@mulander> my %hash = ("mulander", "100pkt", "ktos", "200pkt");
[08:31pm] <@mulander> zadeklarowalismy w tym momencie
[08:31pm] <@mulander> dwa elementy hasha
[08:32pm] <@mulander> widzicie pewnie 4 elementy i byc moze niektorym sie to miesza z listami i tablicami.
[08:32pm] <@mulander> ale pamietacie jak mowilem ze perl pobiera parki klucz/wartosc ?
[08:32pm] <@mulander> to jak pomyslimy to mulander = klucz a 100pkt bedzie wartoscia powiazana z tym kluczem
[08:32pm] <@mulander> to samo z ktos = klucz i 200pkt = wartosc tego klucza
[08:32pm] <@mulander> jednak sposob ten jest dosyc niewygodny.
[08:33pm] <@mulander> a ze programisci perla bardzo lubia upraszczac sobie zycie.
[08:33pm] <@mulander> wiec wymyslili drugi sposob:
[08:33pm] <@mulander> my %hash = (
[08:33pm] <@mulander> mulander => "100pkt",
[08:33pm] <@mulander> ktos => "200pkt",
[08:33pm] <@mulander> );
[08:33pm] <@mulander> wooo split ;)
[08:33pm] <@mulander> zainteresowanych nie wyrzucilo ?
[08:34pm] ;]nie
[08:34pm] nie^^
[08:34pm] muf mulander muf
[08:34pm] hehe
[08:34pm] tzn pisz
[08:34pm] <@mulander> hmm karql i kamil polecieli :>
[08:34pm] a sa jakies ograniczenia
[08:34pm] <@mulander> Reqamst w czym ograniczenia ?
[08:34pm] do znakow w kluczu
[08:34pm] <@mulander> nie spotkalem sie jeszcze z takim ;)
[08:35pm] <@mulander> ale jezeli bedziesz chcial klucz ze spacja w srodku
[08:35pm] <@mulander> to zamiast
[08:35pm] <@mulander> mulander => "cos",
[08:35pm] <@mulander> piszesz
[08:35pm] nie ma ograniczenia co do wielkosc?
[08:35pm] <@mulander> "mul ander" => "cos",
[08:35pm] ale chyba długosc klucza ma wplyw na wydajnosc
[08:35pm] wielkosci*?
[08:35pm] <@mulander> zlyZwierz owszem na wydajnosc i na wydajnosc programisty ( dokladnie jego pamieci :P )
[08:35pm] <@mulander> dlatego przewaznie jako klucz stosuje sie krotkie wyrazy
[08:35pm] <@mulander> np. admin_nick => 'nick',
[08:36pm] <@mulander> w 99.9% wypadkach takie klucze wystarczaja
[08:36pm] <@mulander> i sa wygodne.
[08:36pm] a ma jakies ograniczenie
[08:36pm] co do ilosci kluczy
[08:36pm] <@mulander> w3b tylko ograniczenie pamieci twojego komputera
[08:36pm] <@mulander> mozesz wepchnac tyle kluczy ile ci sie podoba.
[08:36pm] tak podejrzewalem
[08:36pm] ale hardcore
[08:36pm] kurde nie wiem co sie dzieje bo split byl
[08:36pm] i cala lodz poszla
[08:36pm] <@mulander> to lecimy dalej ?
[08:36pm] nio^^
[08:36pm] <@mulander> wracajac do drugiego sposobu
[08:37pm] <@mulander> my %hash = (
[08:37pm] <@mulander> mulander => "100pkt",
[08:37pm] <@mulander> ktos => "200pkt",
[08:37pm] <@mulander> );
[08:37pm] <@mulander> w ladny i wygodny sposob zadeklarowalismy sobie dwa klucze
[08:37pm] <@mulander> oczywiscie przy takiej ilosci kluczy moglbym rownie dobrze napisac
[08:38pm] <@mulander> my %hash = ( mulander => "100pkt", ktos => "200pkt" );
[08:38pm] <@mulander> ale przy wiekszej ilosci dodajemy sobie te nowe linie poto by nam programistom leniwym sie lepiej czytalo :P
[08:38pm] <@mulander> kolejny sposob ten trzeci na deklaracje hasha to autovivikacja ( ang. autovivication )
[08:38pm] <@mulander> czyli deklarujemy sobie nasz hash.
[08:38pm] <@mulander> my %hash;
[08:39pm] <@mulander> i teraz mozemy dodac te dwa elementy.
[08:39pm] <@mulander> $hash{mulander} = "200pkt";
[08:39pm] <@mulander> $hash{ktos} = "200pkt";
[08:39pm] <@mulander> zostana one automatycznie powolane do zycia.
[08:39pm] <@mulander> jak pewnie zauwazyliscie
[08:39pm] <@mulander> kiedy odnosimy sie do JEDNEGO elementu hasha uzywamy znaczka $ a nie %.
[08:39pm] <@mulander> i w przeciwienstwie do tablic uzywamy nawiasow klamrowych { } zamiast okraglych ( )
[08:40pm] <@mulander> pytania ?
[08:40pm] mozesz pokazac ten pierwszy
[08:40pm] bo mowie ze split byl i wszystko poszlo;/
[08:40pm] ja mam jedno^^
[08:40pm] a na shellu tez mialem na lodzi
[08:40pm] <@mulander> Karql pierwsza metoda: my %hash = ("mulander","100pkt","ktos","200pkt");
[08:40pm] moge?
[08:40pm] <@mulander> w3b pytaj
[08:40pm] to wtedy bedzie $hash[1]?
[08:40pm] czy mozna pobrac losowy klucz z hasha?
[08:40pm] bez klucza tak
[08:40pm] ?
[08:41pm] w3b mozna
[08:41pm] :D
[08:41pm] thx
[08:41pm] ^^
[08:41pm] int(rand(zakres))
[08:41pm] <@mulander> karql nie bedzie $hash[1] tylko $hash{mulander}
[08:41pm] <@mulander> poniewaz dodalismy 2 elementy
[08:41pm] <@mulander> 2 parki dokladnie
[08:41pm] aha widze
[08:41pm] to juz lepiej z tym =>
[08:42pm] a jak
[08:42pm] z tego drugiego wyciagalo sie wartosc
[08:42pm] <@mulander> z czego drugiego ?
[08:43pm] sposobu
[08:43pm] tego co pisalo sie pod spodem
[08:43pm] $wart=$hash{klucz} ?
[08:43pm] <@mulander> zlyZwierz dokladnie
[08:43pm] thx
[08:43pm] <@mulander> czegos takiego jak $hash[1] NIEMA!
[08:43pm] <@mulander> to jest wywolanie elementu z tablicy.
[08:44pm] chyba ze klucze nazwiesz cyframi ;]
[08:44pm] ale wtedy nie oznaczają one kolejnosci w hashu tylko nazwę ;]
[08:44pm] dobrze kombnuje ?
[08:45pm] <@mulander> zlyZwierz nawet jak nazwiesz cyframi
[08:45pm] <@mulander> to bedzie $hash{1} a nie $hash[1]
[08:45pm] <@mulander> chodzi o nawiasy.
[08:45pm] chodzi mi o $hash{1}
[08:45pm] aa ok
[08:45pm] no mi tez ;]
[08:45pm] <@mulander> jeszcze jakies pytania ?
[08:45pm] ja nie mam
[08:45pm] <@mulander> jak nie to przykladzik deklaracji hashy ( bardzo debilny :P ) jako przypominajka
[08:46pm] <@mulander> wykldy.vexillium.org/newhash.pl
[08:46pm] <@phoenix__> http://wyklady.vexillium.org/newhash.pl
[08:46pm] <@phoenix__> porawiony
[08:47pm] <@mulander> a tutaj przyklad dostepu do danego elementu hasha
[08:47pm] kurde ten split toszke zamieszal ;d
[08:47pm] <@mulander> http://wyklady.vexillium.org/acchash.pl
[08:48pm] <@mulander> ( jak zauwazycie pewnie w acchash.pl, elementy hasha podlegaja interpolacji w double quoted strings ;) )
[08:48pm] CO??!!
[08:48pm] <@mulander> w ciagach otoczonych podwojnym cudzyslowiem.
[08:48pm] <@mulander> podlegaja elementy hasha interpolacji
[08:48pm] <@mulander> czyli jak wstawisz
[08:48pm] no to wiem
[08:48pm] okej
[08:48pm] juz kumam thx
[08:48pm] <@mulander> print "%hash{mulander}\n";
[08:48pm] <@mulander> to wydrukuje 100pkt
[08:49pm] <@mulander> i znak nowej lini
[08:49pm] <@mulander> lecimy dalej ?
[08:49pm] nie
[08:49pm] oko mnie boli
[08:49pm] <@mulander> w sumie teraz jeden z najkrotszych tematow dotyczacych hasha bedzie :P
[08:49pm] ej, a co by wyswietlilo
[08:49pm] jesli dalbys 2 adresy stron?
[08:49pm] <@mulander> w jakim sensie dwa adresy ?
[08:50pm] my %strona = (
[08:50pm] adres => 'perlmonks.org',
[08:50pm] tematyka => 'perl',
[08:50pm] );
[08:50pm] mulander:
[08:50pm] <@mulander> zmodyfikuj kod tak by pokazal co rozumiesz poprzez dwa adresy
[08:50pm] 20:47 <@mulander> print "%hash{mulander}\n";
[08:50pm] nie powinno byc $ zamiast % ?
[08:50pm] <@mulander> zlyZwierz fakt powinno ;)
[08:50pm] ok
[08:50pm] <@mulander> zamyslilem sie ;)
[08:50pm] <@mulander> i literowke walnalem :>
[08:51pm] my %strona = (
[08:51pm] adres => 'perlmonks.org',
[08:51pm] tematyka => 'perl',
[08:51pm] adres => 'wyklady.org',
[08:51pm] tematyka => 'nauka',
[08:51pm] );
[08:51pm] <@mulander> reqamst ten kod ci sie nie odpali ;)
[08:51pm] sa 2 pary
[08:51pm] tych samych kluczy
[08:52pm] <@mulander> oczywiscie o ile uzywasz use strict i use warnings;
[08:52pm] czyli musialbym stworzyc jeszcze
[08:52pm] my %strona2 = (
[08:52pm] adres => 'wyklady.org',
[08:52pm] tematyka => 'nauka',
[08:52pm] );
[08:52pm] ?
[08:52pm] <@mulander> Reqamst tak musialbys
[08:52pm] 1 prosba: mozesz opublikowac zadanka troche pozniej niz o 9 rano? :D
[08:52pm] <@mulander> ewentualnie
[08:52pm] <@mulander> moglbys uzyc referencji.
[08:52pm] <@mulander> ale niechce wam mieszac z referencjami :P
[08:52pm] <@mulander> ( ty poprostu chcesz zrobic hash zawierajacy hasha tak da sie to zrobic :P )
[08:52pm] <@mulander> KamiI moge bo bede na wykladach pewnie do 15.
[08:53pm] yo
[08:53pm] <@mulander> lecimy dalej ?
[08:53pm] ta
[08:53pm] lec dalej
[08:54pm] <@mulander> w sumie to wrzuce bez +m bo za krotki temat by was uciszac ;)
[08:54pm] <@mulander> wiemy juz jak automatycznie dodawac elementy do hasha przez autovivikacje
[08:54pm] <@mulander> prawda ?
[08:54pm] ta
[08:54pm] <@mulander> to teraz usunmy jakis element.
[08:54pm] <@mulander> najpierw robimy hasha
[08:54pm] <@mulander> my %hash;
[08:54pm] <@mulander> $hash{element} = 1;
[08:54pm] <@mulander> teraz usunmy ten element
[08:54pm] <@mulander> nic prosztszego.
[08:55pm] <@mulander> prostszego :P
[08:55pm] <@mulander> delete $hash{element};
[08:55pm] <@mulander> i juz ten element jest trwale z hasha usuniety.
[08:55pm] <@mulander> UWAGA nie usuwamy w ten sposob zawartosci calego hasha ;)
[08:55pm] razem z kluczem?
[08:55pm] <@mulander> Karql w { } podajesz ZAWSZE klucz ;)
[08:55pm] klucz zostaje tak
[08:55pm] <@mulander> wiec usuwa klucz i element.
[08:55pm] aha spox
[08:56pm] <@mulander> przechodzimy teraz do troszke mniej milych rzeczy ale przydatnych ;P
[08:56pm] <@mulander> duze hashe byly by bezuzyteczne jakbysmy musieli pamietac wszystkie klucze.
[08:56pm] <@mulander> wiec programisci perla wymyslili takie funkcje jak keys, values oraz each.
[08:57pm] <@mulander> i omowimy je w tej kolejnosci, zaczynajac od keys.
[08:57pm] <@mulander> keys zwraca liste kluczy hasha
[08:57pm] <@mulander> czyli jezeli mamy takie parki w naszym hashu
[08:57pm] <@mulander> a => 1
[08:57pm] <@phoenix__> ide papa
[08:57pm] <@mulander> b => 2
[08:57pm] <@mulander> c => 3
[08:57pm] <@mulander> d => 4
[08:57pm] <@mulander> to @lista_kluczy = keys %hash;
[08:58pm] <@mulander> zwroci nam liste qw(a b c d);
[08:58pm] <@mulander> teraz wybiegne troche do przodu i powiem wam jak wydrukowac wszystkie elementy hasha, o sama funkcje for jeszcze nie pytajcie ;)
[08:58pm] <@mulander> print "$_ => $hash{$_}\n" for keys %hash;
[08:59pm] <@mulander> wydrukuje nam to losowo nasze elementy hasha
[08:59pm] <@mulander> czyli
[08:59pm] <@mulander> np.
[08:59pm] <@mulander> d => 4
[08:59pm] <@mulander> c => 3
[08:59pm] <@mulander> a => 1
[08:59pm] <@mulander> b => 2
[08:59pm] <@mulander> jezeli chcemy otrzymac sortowane alfabetycznie klucze
[08:59pm] <@mulander> uzyjemy do tego znanej nam juz funkcji sort
[08:59pm] <@mulander> czyli
[08:59pm] <@mulander> print "$_ => $hash{$_}\n" for sort keys %hash;
[08:59pm] <@mulander> i otrzymamy
[08:59pm] <@mulander> a => 1
[08:59pm] <@mulander> b => 2
[08:59pm] <@mulander> c => 3
[09:00pm] <@mulander> d => 4
[09:00pm] <@mulander> pytania /
[09:00pm] no
[09:00pm] to moglbys
[09:00pm] zrobic jakis przykladzik
[09:00pm] ze stworzeniem hasha
[09:00pm] <@mulander> prosze
[09:00pm] i wykorzystaniem
[09:00pm] keys
[09:00pm] i for
[09:00pm] <@mulander> http://wyklady.vexillium.org/keys.pl
[09:00pm] thx
[09:00pm] <@mulander> wszystkim sie laduje ?
[09:01pm] ta
[09:01pm] daj minutke
[09:01pm] zobacze czy wszystko w tym rozumie
[09:01pm] <@mulander> to wydrukuje nam punktacje najpierw w kolejnosci jaka jest w hashu ( czyli dla nas losowa dla komputera taka jak chce )
[09:01pm] <@mulander> a potem wydrukuje posrotowane alfabetycznie wedlug kluczy
[09:02pm] no rozumiem
[09:02pm] thx
[09:02pm] <@mulander> jeszcze jakies pytania ?
[09:02pm] $_
[09:02pm] to przykladowa zmienna;P
[09:02pm] <@mulander> $_ to specjalna zmienna perla ;)
[09:02pm] czyli
[09:03pm] <@mulander> niektore petle funkcje itd korzystaja z niej jezeli nie podamy wlasnej
[09:03pm] <@mulander> jezeli bym napisal
[09:03pm] <@mulander> print "$zmienna => $hash{$zmienna}\n" for my $zmienna sort keys %hash;
[09:03pm] <@mulander> wtedy kazdy klucz bylby po kolei przypisywany do $zmienna
[09:03pm] <@mulander> jako ze jej nie podalem
[09:03pm] <@mulander> jest automagicznie zapisywany do zmiennej $_
[09:03pm] thx
[09:03pm] <@mulander> ale powiemy sobie dokladnie jak dzialaja te petle itd przy petlach ;)
[09:04pm] <@mulander> jeszcze jakies pytanka ?
[09:04pm] no nie^^
[09:04pm] <@mulander> to lecimy dalej
[09:04pm] <@mulander> podobnie jak keys, funkcja values zwraca rowniez liste ale tym razem jest to lista wartosci.
[09:05pm] <@mulander> zalozmy ze chcemy wydrukowac wszystkie punkty z tego przykladu
[09:05pm] <@mulander> print "$_\n" for values %hash;
[09:05pm] <@mulander> albo chcemy je posortowane od najwiekszej ilosci do najmniejszej
[09:05pm] <@mulander> print "$_\n" for sort { $b <=> $a } values %hash;
[09:05pm] <@mulander> przyklad znajdziecie tutaj
[09:06pm] <@mulander> http://wyklady.vexillium.org/values.pl
[09:06pm] <@mulander> pytania ?
[09:07pm] niet
[09:07pm] <@mulander> to przechodzimy do each
[09:07pm] <@mulander> each dziala troche odmiennie od keys i values
[09:07pm] <@mulander> otoz przy kazdym wywolaniu
[09:07pm] <@mulander> zwraca on tylko jedna pare klucz/wartosc
[09:07pm] <@mulander> ale tez pamieta jakie juz zwrocil
[09:07pm] <@mulander> wiec bedzie je zwracal az zwroci wszystkie.
[09:08pm] <@mulander> btw zapomnialem o przykladzie do usuwania elementow :P
[09:08pm] <@mulander> http://wyklady.vexillium.org/delhash.pl
[09:08pm] <@mulander> czyli jezeli mamy hash ( wracamy do each )
[09:08pm] <@mulander> my %hash = (a=>1,b=>2);
[09:08pm] <@mulander> i zrobimy
[09:09pm] <@mulander> my ($key,$value) = each %hash;
[09:09pm] <@mulander> to w $key znajdziemy 'a' a natomiast $value bedzie mialo liczbe 1
[09:09pm] <@mulander> przy drugim wywolaniu
[09:09pm] <@mulander> bedzie to $key = b i $value = 1
[09:09pm] <@mulander> drobny przyklad ( tu tez jest uzyta petla narazie nie zwracajcie na nia za bardzo uwagi :P pokazuje tylko do czego takie cuda sie moga przyda )
[09:10pm] <@mulander> http://wyklady.vexillium.org/each.pl
[09:10pm] <@mulander> pytania ?
[09:10pm] 23:10 <@mulander> bedzie to $key = b i $value = 1
[09:10pm] a nie dwa?
[09:10pm] value
[09:10pm] <@mulander> tak przepraszam 2 :)
[09:10pm] <@mulander> O Unavowed ello ;)
[09:10pm] <@mulander> a ty tu czego? :P
[09:10pm] czesc
[09:10pm] a tak przyszedlem zobaczyc co sie dzieje
[09:10pm] ;>
[09:10pm] <@mulander> :P
[09:10pm] <@mulander> dobra jeszcze jakies pytanka?
[09:10pm] mulander: czyli each masz
[09:10pm] a jak zrobic zeby zatrzymal
[09:11pm] zeby np cos wsadzic miedzy klucz a wartosc
[09:11pm] wypisywanie gdy dojdzie do okreslonego klucza?
[09:11pm] tu sa takie petle jak w innych jezykach?
[09:11pm] ta
[09:11pm] <@mulander> Reqamst to juz kontrola petli.
[09:11pm] <@mulander> tak mozna przerwac petle
[09:11pm] <@mulander> tylko zamiast break; uzywa sie last;
[09:11pm] <@mulander> zreszta jest tez pare innych mozliwosci ale o tym powiem przy petlach
[09:11pm] mulander: a np chcesz dwarazy wydrukowac wykorzystujac each
[09:11pm] to mozesz to each wyzerowac zeby odnowa szedl
[09:11pm] ?
[09:12pm] <@mulander> Karql mozesz kazac petli sie wykonac 2 razy ;)
[09:12pm] <@mulander> bez zmiany warunku np.
[09:12pm] <@mulander> ale o tym przy petlach.
[09:12pm] no wlasnie
[09:12pm] to wiem
[09:12pm] bo juz sie gubie:P
[09:12pm] ale np na koncu i na poczatku chce to wydrukowac
[09:12pm] to jesli petla wykona sie cala a pozniej zrobie druga petle to bedzie tez od nowa
[09:12pm] ?
[09:12pm] <@mulander> Karql to jest petla + instrukcja warunkowa ktora uruchamia instrukcje zmieniajaca przebieg petli.
[09:12pm] <@mulander> Karql tak bedzie od nowa.
[09:13pm] <@mulander> to nie usuwa nic z hasha.
[09:13pm] <@mulander> tylko wydobywa az dojdzie do konca
[09:13pm] <@mulander> i znow sie ustawia na poczatek.
[09:13pm] dobra sprawdzilem sobie
[09:13pm] <@mulander> lecimy dalej ?
[09:13pm] a w each mozna sortowac
[09:13pm] ?
[09:13pm] ta
[09:13pm] <@mulander> each jak sie uprzesz to posortujesz ale to nie wygodne.
[09:14pm] <@mulander> lepiej uzyc sort keys %hash
[09:14pm] <@mulander> i wtedy uzywac $key $hash{$key}
[09:14pm] mulander: nic nie rozumiem, ale lec dalej
[09:14pm] <@mulander> Ingo hashe sa troche nie logiczne jak sie z nimi nie pracowalo :>
[09:15pm] <@mulander> dobra teraz powiemy sobie o innym triku.
[09:15pm] <@mulander> zalozmy ze mamy hash
[09:15pm] <@mulander> my %hash = (
[09:15pm] <@mulander> a => 1,
[09:15pm] <@mulander> b => 2,
[09:15pm] <@mulander> c => 3,
[09:15pm] <@mulander> );
[09:15pm] <@mulander> jak wiecie a b c to klucz 1 2 3 to wartosci
[09:15pm] <@mulander> ale mozemy sobie odwrocic tego hasha ;)
[09:15pm] <@mulander> chociaz to rzadko spotykana metoda i latwo wywolujaca bledy
[09:15pm] <@mulander> mozemy zrobic
[09:16pm] <@mulander> my %rev = reverse %hash;
[09:16pm] <@mulander> teraz dla %rev wyglada tak
[09:16pm] <@mulander> 1 => 'a',
[09:16pm] <@mulander> 2 => 'b',
[09:16pm] <@mulander> 3 => 'c',
[09:16pm] <@mulander> tutaj musze wspomniec o jednej rzeczy
[09:16pm] <@mulander> zanim takie cos bedziecie chcieli zrobic
[09:16pm] <@mulander> upewnijcie sie ze zadna wartosc sie nie powtarza
[09:16pm] <@mulander> poniewaz klucze musza byc identyczne
[09:17pm] <@mulander> i jezeli ktorys sie powtorzy to nadpisze poprzedni.
[09:17pm] <@mulander> pytanka ?
[09:17pm] tia
[09:17pm] chyba klucze nie moga byc identyczne
[09:17pm] :D
[09:17pm] a jak zapisac cos do klucza
[09:17pm] bedzie cos o wykozystaniu socketow?
[09:17pm] <@mulander> Karql dlatego mowie ze by nadpisal poprzedni.
[09:17pm] ale napisales ze musza byc identyczne:D
[09:17pm] <@mulander> Ingo jezeli dalej bedzie zainteresowanie kursem to tak.
[09:17pm] i potem jeszcze dopisac do tego klucza
[09:17pm] czaski blad
[09:17pm] :D
[09:17pm] <@mulander> fakt :
[09:17pm] <@mulander> :P
[09:18pm] o czym wyklad?
[09:18pm] <@mulander> mialo byc nie moga byc identiczne.
[09:18pm] <@mulander> ant_ perl.
[09:18pm] mulander: tak btw ale mnie dzisiaj tenbot wnerwia:D
[09:18pm] hashe
[09:18pm] ciagle trwa?
[09:18pm] ale to pozniej pogadamy
[09:18pm] <@mulander> ok
[09:18pm] <@mulander> ant_ dopiero sie zaczal o 20 :P
[09:18pm] aaa
[09:18pm] to sora :)
[09:18pm] hmmm? mulander? ;>
[09:18pm] przepraszam za spoznienie panie profesorze :)
[09:18pm] <@mulander> Reqamst co rozumiesz poprzez dopisac do klucza ?
[09:19pm] <@mulander> ant_ wybaczam ;P
[09:19pm] a to ty! :)
[09:19pm] <@mulander> a kto?:P
[09:19pm] mozesz powtorzyc od poczatku? :)
[09:19pm] wlasnie
[09:19pm] mozna zmienic wartosc klucza?
[09:19pm] dobra, dobra ide pic dalej i nie przeszkadzam :)
[09:19pm] <@mulander> w3b mozesz usunac klucz.
[09:19pm] <@mulander> delete $hash{key}
[09:19pm] <@mulander> i zapisac sobie nowy
[09:19pm] <@mulander> ale podmienic nie.
[09:19pm] mam np. a => 3,
[09:20pm] a chce zmienic na c => 34,
[09:20pm] a jak sie tworzy nowy klucz
[09:20pm] <@mulander> w3b mowilem o tym.
[09:20pm] <@mulander> $hash{nowy_klucz} = "wartosc";
[09:20pm] a tak racja
[09:20pm] sory
[09:20pm] :P
[09:20pm] <@mulander> Reqamst nie podmienisz kluczy.
[09:20pm] <@mulander> mozesz usunac klucz a
[09:20pm] wrzuccie logi na serwer :)
[09:20pm] <@mulander> i dodac klucz c
[09:21pm] <@mulander> hmm ma ktos ladnego loga ?
[09:21pm] czesc Astarot|aw
[09:21pm] <@mulander> chwilka przerwy
[09:22pm] <@mulander> ja wrzuce loga dla ant_
[09:22pm] kej
[09:22pm] ave
[09:22pm] ave mulander
[09:22pm] koniec juz?
[09:22pm] wrzucaj a ja pojde po piwo :)
[09:22pm] nie!