Perliini eli Perl tutti # 1 Varoitus!!! Tämä dokumentti saattaa aiheuttaa riippuvuutta tai vähentää sitä. En vastaa mistään mitä dokumentissa lukeee. Kieli on karkeaa eikä sovi kenellekään. Dokumentti ei sovi kenellekään eikä kenenkään täysijärkisen pitäisi sitä lukea. Ei sovelly myöskään epätoivoon vaipumisen apuvälineeksi, mutta jos jostain syystä tämä tapahtuu on se valitettavaa, mutta emme ota vastuuta siitä. Dokumentti ei vastaa käsityksiäni oikeudenmukaisesta elämästä. En vastaa mikroaaltouunissa kärventyneistä kissoista, koirista, laamoista, hiiristä, rotista, jäniksistä, tarhaelefanteista, laamoista, kultakaloista, käärmeistä, krokotiileistä, alligaattoreista, gorilloista, mistää lemmikkieläimistä, pölypunkeista, laamoista muista mikroskooppisen pienistä ötököistä, mistään ötököistä yleensä, eikä mistään eläimistä varsinkaan lamereista taikka laamoista. Jos jokin eläin kuitenkin kuolee, on se valitettavaa. Dokumentti saattaa kuluttaa kovalevytilaa, prosessoritehoa, käyttäjän aikaa, mp3-soittimen suorituskykyä, perl-tulkin työllistämistä tai sen työttömyyttä, kuluttaa näyttöä, hiirtä, näppäimistä tai muita laitteita kuten naapurin mummon sydämentahdistajan elinikää sekä se voi vaikuttaa Soneran osakkeen kurssiin, Nokian vuositulokseen, Microsoftin monopolin kaatumiseen, Wall streetin pörkkiromahdukseen taikka J.F.Kennedyn murhaamiseen. Siis en ota mitään vastuuta mistään. End_of_Varoitus!!! Alkeet ------ Tehrään perinteinen "Hello, world!" ohjelma. Writaappas: #!/usr/bin/perl #tuon pitäisi käynnistää perl Linuskissa && Unixeissa #(siis laittele oikea perl hakemisto /usr/bin/perl tilalle, kokeile: which perl) #Tämä ohjelma on eritäin kehitynyt, joten: print ("Hello, world!\n"); #Ja sitten hastalavistataan ohjelma... #...eli savetetaan se eikä tehrä mitään muuta kuin lopetata #datan writeaaminen. Kommentteja (#####) #kannattaapi laittaa joka paikkaan, #jotta ohjelma näyttäisi pidemmältä... Tai sitten, jollet halua kaikkia kivoja kömmenttejä: #!/usr/bin/perl print ("Hello, world!\n"); Noin ikään!! Onnittelut, ensimmäinen perl-ongelmasi on valmis. Vertailut --------- Ja sitten tehdään database-sovellus internetiin höystettynä vieraskirjalla, login-lelulla, tiedostoeditorilla, search enginellä,... ...Juuei, kokeillaan ensin jotain helpompaa. Perli sisältä jonkinnäköisiä vertailujutskia, joilla saadaan selville onks toi numero yks, kaks vai kolme. Perl on siitä hauska että nummeerisille sekä teksimuuttujille on erilaiset vertailuoperaattorit. Jotta tän sais mahdollisimman helposti niin tos on sulle taulukko: Mikähä? numerot teksti selitystä ----------------------------------------------------------------- yhtäsuuri == eq equal erisuuri != ne not equal vähemmän kuin < lt less than enemmän kuin > gt greater than vähemmän tai yht. <= le less or equal than enemmän tai yht. >= ge greater or equal than Haa, eli se siitä. Muuttu(/a)jat ------------- Eli kaikissa on $ edessä, kuten $eka meinaapi muuttujaa nimeltä eka (kannattaapi lukea: seka). Jos nää haluat numeromuuttujan kirjaat: $numero=5; Merkkijonoja on kahdenlaisia yksöis- ja kaksoiquotella: $yksquote='heippa'; #meinaapi heippa $kaksquote="heippa"; #meinaapi heippa\n Et' sillee!! Sitten se hauska ominaisuus. Perl tallentaapi kaikki numerot kymmenpotenssimuodossa jolloin pyöristysvirheitä tuleepi kivasti. Koikeile printfllä (joo tekee saman kuin C:ssä): printf("%.51f\n",5.1-2.4); #Tulos-ulos-tuu: 2.6999999999999997000... print(5.1-2.4,"\n"); #2.7 eli oikein!!! Sitten hianoja merkkejä. Kun nyt tiijät sen "\n" ainakii, nii täss on lissäää: merkki merk(k)itys ------------------------- \n rivinvaihto :-o \r rivin alkuun \t meinaapi tabbia \f sivunvauhto \b taka-avaruus (backspace) \v pystysuuntainen tabbi \a soundblaster emulaatio PC-spiikkerin kautta eli äänimerkki \e escape \007 salainen agentti (oktaaliluku, ensin \0 ja sitten numero kuten 07) \x7f Heskaaa eli \x ja heksaluku (tässä 7f) \cC cCopyright elikkä control+C. Siis pieni c meinaa CTRL + jokin merkki \\ kenoviiva eli \ \" lainaus eli quote \l seuraava merkki pienellä \L seuraavat merkit pienellä kunnes tulee \E \u seuraava merkki isolla \U seuraavat merkit isolla kunnes tulee \E \Q kaikki merkit jotka eivät ole kirjaimia tai numeroita merkitään oudolla (?) merkillä joka on tälläinen: \ Esim: je%! -> je\%\! \E Lopettaapi \L, \U tai \Q Jos nää nyt haluat vielä niitä merkkijonoja niin: "kana" x 3 #tulos on "kanakanakana" (1+5) x 3 #ompi "666" !ei toimi chop() ja chomp() toimiivat: $jee="jees"; chop($jee); print "$jee"; #ulostaa jee $jee="jees"; chomp($jee); print "$jee"; #tulostaa jees Choppi ottaa poies vikan kirjaimen, mutta chomppi ottaapi vain rivinvaihron. Ja lukeminenhan tapahtuupi (siis näpyltä): print "Kirjoitas jotain: "; $writaa=; print "$writaa \n"; #tulostaa mitä kirjoittelit. #en vastaa kirjoittamastasi datasta #tai mistään muustakaan, kuten #sen aiheuttamasta tuskasta, kivusta, #datan katoamisesta, kissojen kärventymisestä #mikroaaltouunissa, psykopaattisista #ongelmista tai mistään muusta mitä #kirjoitettu teksti saattaa aiheuttaa. #You have all responsibility, dude! Jees! Toimii(ko)! Niinjoo, "kakka" ja "kikkara" jos halutaan yhdistää "kakkakikkara"ksi se toimiipi näin: "kakka"."kikkara" ja ulosteeksi tulee "kakkakikkara" että silleen on närhen sukupuolielimiin mitenkään suoraan vittaamatta saatuu suurin mahdollinen hyöty tästäkin toiminnosta (piste). Listat ------ (1, 2, 3) #lista, jossa 1, 2 ja 3. () #tyhjä lista ("Jees",2,3) #lista jossa "Jees", 2 ja 3. Joo ja listoja varten on oma merkkinsä, at (@). Eli @lista = (1,2,3); #(lue: at lista on yhtä kuin sulku auki yksi pilkku #kaksi pilkku kolme sulku kiinni puolipilkku #risuaita sulku auki äl uu ee kaksoispiste...) @saunalahti = @lista; #nyh saunalahti on sama kuin (1,2,3) $sauna = @saunalahti; #ei valita mitään, koska $sauna on nyt #@saunalahden pituus eli kolme (3). ($lahti) = @saunalahti; #$lahti sisältää nyt @saunalahden ekan alkion eli #ykkösen (1) eli on sama kuin $saunalahti[0] $lahti=$saunalahti[1]; #nyt vedoten nollasta alkavaan numerointiin #$lahti sisältää numeron kaksi(2) eli tokan (2.) #alkion @saunalahdesta. ($saunalahti[0],$saunalahti[1])=($saunalahti[1],$saunalahti[0]); #vaihtaapi kahren alkion paikkaa Ihan kivastus. (PUSH) (POP) Ja ny pussaamme ja poppaamme alkiot omast listast poies ja sisään. Pussissa on palju käytt mahtollisus ja kosk englises push meinaap työntämist ja pop on sen vast koht ja sill viis. @lista = (1,2,3); push(@lista,4); #tulee viimeinen alkio neljä arvoksi (1,2,3,4) $taala=pop(@lista); #$taala olla lista vïïmëïnën arvo 4 Voi sihteerikköpalkollisen työasun ruokatahran omistajan alapään nimitys. Jos et saanut selvää mistään niin ei millään väliä olekkaan. Shift ja unshift toimivat samoin kuin push ja pop mutta data lisätään ekaksi eli: # !ei toimi shift(@lista,4); #tulee (4,1,2,3) $taala=unshift(@lista); #tulee 4 Reverse kääntää listaan väärinpäin: @lista=reverse(@lista); #tuleepi (3,2,1) Sortti on, ylläri, ylläri, järjestelyfunktio: @lista=(1,4,6,2,9,3); @slist=sort(@lista); #@slist on nyt (1,2,3,4,6,9) taikka @lista=("jee","hauskaa","on","mulla"); @slist=sort(@lista); #Tulos on ("hauskaa","jee","mulla","on"); taulukkona wörkkii (tai sitten ei) näin: @a=; Jollostii näppisken painallusket menee listaan! Jokaiseksi alkioiseksi tulee yksi rivi. Loppuupi luku CTRL-Z signaaliin, joka lähetetään by käyttäjä from näppis. Yritteleppäs muuten tulostella näitä listoja kiltisti, sillä ongelmia siihen liittyy paljon. (siis järjestys sana perse päin) Varsinkin jos sulla on viälä samanniminen listainen. Nyh yritetään tulostaa muuttujan $testi sisälmys sekä [1] peräkkäin. @testi=("testi","jehna!"); $testi="jees!"; #Let's try fuck em up print "no voi $testi[1]\n"; #no voi jehna! print "no voi ${testi}[1]\n"; #no voi jees![1] print "no voi $testi"."[1]\n"; #no voi jees![1] print "no voi $testi\[1]\n"; #no voi jees![1] Elikkä eläkkä älämölöä pitään rupea jos kusee vaan tee noin! "Jos täytätte mun lasini" eli ohjausrakenteet --------------------------------------------- Perlissä olla paljon yhtäläisyys Ceen kanssa jolloista blokki, jossa koodia olla eli koodilohkoinen tuleepi kaarisuluilla: { print "Minun koodiblokki\n"; print "Vieläkin minun koodiblokki\n"; } print "Eipäs olekaan minun koodiblokki\n"; ###########################################^=suoamen kiälen raiskausta Tuohan erijärkevää olikin! Mutta jos jossitellaan niin blockit on käteviä. Siis kaikki jossittelemaan jos-lausetta käyttäen: if (ehto) { #siis jos ehto olla todentuntuinen niin tämä blokki suoritettaneen. } else { #jos jury taas katsoo ehdon olevan täyttä palturia #blockki tämä suoritettaneeksi tuleepi. } Ja mikä sitten olla tosi: 0 epätosi 1 tosi 2 tosi 00 epätosi "k" tosi "" epätosi undef epätosi Eli siinähän se on rgb=#000000:aa rgb=#FFFFFF:llä. (valitettavasti :-]) Sillä aikaa kun minä täytän mahalaukkuani eräänlaisilla elintarvikkeiksi kutsutuilla tavaroilla, sinä saanet yksin opetella... Siis while käsittelyyn otettakoon: while (ehto) { #niinkauan kun ehto tosi olla niin tänne tule #tänne suoritus tulee } ja myös olla hauska toiminto, until: until (ehto) { #suorita niin kauan kunnes ehdosta tulee tosi #eli toisin sanoen niin kauan kun ehto on epätosi #näitä rivejä suoritellaan } Sitten on myöäs do..while ja do..until: do #suoritetaan nämä rivit ainakin #kerran ja sitten kun ehto olla epätosi niin lopetetaan while (ehto); sekä myöäskin: do #suoritetaan nämä rivit ainakin #kerran ja sitten kun ehto olla tosi niin lopetetaan until (ehto); Nyt alkaa tuntua erään toimenpiteen muodostama hankaussäkö kriittisessä paikassa kipunoina. Vittu, SE palaaaaaa!!!!!! Rohkee veto oli tämäkin... Odotteles jonkin aikaa, jotta tulipalo sammumaan saadaan. (ps. osta hyvä kookospalmu, nyt vain $kookospalmu) Ja toistaa pitäisi??? No toistele sitten: for ( muuttuja; ehto; muuta ) { #suoritetaan kunnes muuttuja täyttää ehdon } Esim erkki tähän väliin: for ($x=0; $x<10; $x++) { print "$x"; } Yskin_kertaista. Ja sitten olla viälä foreach: Se olla han kala tai sitten ei, mutta selittänen sen. foreach $muuttuja (@lista) { #tähän koodi } Elikkä esimerkki, jotta ymmärtää voisit: @lista=(1,2,3,4,5); foreach $x (@lista) { print $x; } Tulostus olla: 12345 eli asettelee vuoronperään x:n arvoksi listassa olevan alkion arvon. Toinen esimerkki: @lista=("heippa_","kaikki_","immeiset!"); foreach $x (@lista) { print $x; } Tulostus: heippa_kaikki_immeiset! Vedoten kirjoittajan rajoittuneeseen mielenvikaisuuten päätän päättää että päätän tämän dokumentin tähän. Mutta sinun ei depressioon vaipua pitämän, koska kohtapuolin kakkosnummero tästä aiheesta tuleman pitämän, koska aiheesta tietoa olla saatavilla olla paljon. Juuei. Pitäisköhän joskus kirjoittaa ihan suomea! Seuraavaksi yritän kehittää jotain järkevää. (<-joking only) Ja erästä outoa Ali Yakowajsdkajwitchiä lainaten: "there's no phones, no lights, no motor cars" eli tulossa ei todellakaan ole mitään hianoja perl-sovelluksia, mutta kaikkea kivaa kylläkin. Riemuiten hyppikäämme ja perl-tuttia imekäämme. Tämän dokumettisen mukaan minua vaivaapi psykopaattinen hermoromahdusta edeltävä kammiovärinää muistuttava turhautuneisuuden yliannostuksesta johtuva mikrosoftaalinen tiltofobia, joka aiheutuu liialliseta Windows 9x-käyttöjärjestelmien käytöstä. So long and perl you! (C you) Köppyrrittghti (c) 1+666+666+666 Joro, just another lamer in the Perliini