perusteet ActivePerl - Osa 18 Johdanto Tämä on osa 18 minun sarja, perusteet ActivePerl. Alue muistissa on joukko peräkkäisiä muistisolujen. Arvot (muuttujan sisältö) pysyy muistissa alueilla. Muuttuja tunnistaa muistin alueella. Viittaus on osoitin muisti alueella ja on yleensä käytetään, kun olet enemmän kiinnostunut siitä, mitä on muisti alueella eikä muuttuva. Harkitse viite kuin osoitteen muistin alueella. Tämä muisti alue voi olla arvo. Tässä osa sarjasta, katsomme ActivePerl Reference. Kaikki hahmoteltu tässä opetusohjelmassa on sovellettavissa perinteinen Perl.
Huomautus: Jos et näe koodia tai jos luulet jotain puuttuu (rikki linkki, kuva poissa), vain yhteyttä minuun [email protected]. Eli minuun yhteyttä pienintäkään ongelmaa olet mitä luet. Muisti Alue muisti alue on tietokoneen muistiin, joka pitää arvoa muuttujan. Arvon täällä, viittaan skalaariarvo, array tai hash. Eri Memory alueiden kanssa eri muuttujien Tarkastellaan seuraavaa kahden peräkkäisen julkilausumat: minun $ myVar = "Olen sisällön suuren tekstitiedoston kiintolevyltä, nyt muistissa."; minun $ Avar = "Olen sisällön suuren tekstitiedoston kiintolevyltä, nyt muistissa.
"; Sinulla on kaksi eri muuttujien eri nimillä mutta sama merkkijono arvot. Muuttuja tunnistaa muistin alueella. Kaksi eri muuttujia kahdella eri nimellä tunnistaa kaksi eri muisti alueilla kaikki on yhtä suuri. Edellä mainitussa tapauksessa, nämä kaksi arvoa, vaikka ovat samat, ovat kaksi eri muistialueiden. Sama muistialue kaksi eri muuttujien Vuonna ActivePerl voit tehdä saman muistin alueella on kaksi eri muuttujaa. Kaksi eri muuttujaa tietenkin tunnistaa sama arvo.
Harkitse seuraavat peräkkäiset kaksi lausumaa: minun $ myVar = "Olen sisällön suuri tekstitiedoston kiintolevyltä, nyt muistissa."; minun $ hisVar = \\ $ myVar; Ensimmäistä selvitys sinulla arvo määrittää muuttujan, $ myVar. Toisessa lausunnossaan, $ myVar edeltää kanssa \\ merkki ennen kuin heille annetaan uusi muuttuja, $ hisVar. \\ On operaattori. Toisessa selvitys, \\ operaattori, edeltävän ensimmäisen muuttujan, tekee toinen muuttuja tunnistaa saman muistin alueella (sama arvo) kuin ensimmäinen muuttuja. Tärkeä asia huomata tässä on, että \\ $ myVar viittaa muistin alueelle.
Toisen lausuman, \\ $ myVar, jossa \\ on viittaus (osoite muistin alueen tunnistetaan $ myVar). $ HisVar on muuttuja, ei viittaus. Sanomme $ myVar omistaa arvo (string), kun taas $ hisVar pitää viite (osoite). Käyttämällä Viite Nyt sinulla on viite, miten voit saada arvon muistin alue, joka muuttuja viittaa? Toisin sanoen muuttuja käy viite muistia alueen, miten voit saada arvon, että muisti alueella käyttäen muuttuja? Edellä mainitussa tapauksessa, $ hisVar käy viittaus alueen tunnistetaan $ myVar.
Saadaksesi arvoon käyttäen $ myVar, ei ole ongelma, koska sinun täytyy vain käyttää $ myVar sijasta arvon. Saadakseen arvon muuttuja ($ hisVar), joka on viittaus, sinun on käytettävä {} suluissa seuraavasti: $ {$ hisVar} Täällä olemme tekemisissä skalaari, joten aloitat skalaari merkki. Tätä seuraa pari olkaimet. Sisällä olkaimet, sinulla on muuttuja, joka pitää viittaus. Seuraava koodi kuvaa tätä: käytä tiukka; print "Content-Type: text /html \\ n \\ n"; minun $ myVar = "Olen sisällön suuren tekstitiedoston kiintolevyltä, nyt muistissa.
"; minun $ hisVar = \\ $ myVar; print $ {$ hisVar}; Se on vaihdat hisVar kanssa {$ hisVar}. Skalaari ja viite edellä selitys on sovellettavissa skalaareja. Samanlainen asia on sovellettavissa taulukot ja hash. Kuitenkin taulukot ja hash, on kaksi tapaa luoda viite ja kaksi tapaa käyttää viite. Array ja viite Harkitse seuraavia array luominen: minunarr = ("yksi", "kaksi", 3, 4); Viitata ulosarr, sinun täytyy ennen muuttujan \\ merkki, seuraava ilmoitus havainnollistaa: my $ Aref = \\arr; Anonymous Array Edellä osiossa, tarvitset kaksi ilmoitusta sen keksiä erilaisia viitaten.
Ensimmäisessä lausumassa antaa array nimi,arr. Nyt on mahdollista käyttää vain yhden lausunnon keksiä erilaisia. Tässä tapauksessa, array ole nimeä. Se täytyy vain viittaus alueelle muistissa että on jono. Seuraava lausuma kuvaa tätä: minun $ Aref = ["yksi", "kaksi", 3, 4] Huomaa tässä, että meidän on hakasuluissa rajata array elementit eikä kaareva kannattimet luetteloon ennen. Tässä tilanteessa, hakasulkeiden palauttaa viite (muistiosoite) array. Tämä viittaus palasi osoitetaan skalaarimuuttujan, $ Aref.
Sinun ei tarvitse \\ merkki täällä, koska joukko ei ole nimeä ja \\ tulisi käyttää edessä nimi. Huomautus: Muuttuvanäyttöisillä joka pitää viittaus on skalaarimuuttujan. Joten viittaus array tai hash hallussa skalaarimuuttujan. Käyttämällä Array Viite Yksi tapa saada array array viittaus (muuttuja pitämällä viittaus) on käyttää olkaimet. Edellä viittaus, kirjoitetaan, @ {$ Aref} Aloitat array merkki, @, koska olet tekemisissä array. Tämän jälkeen olkaimet. Sisällä olkaimet, sinulla on muuttuja, joka pitää viittaus. Sinun eivät yleensä käytä array kokonaisuudessaan (kuten edellä).
Yleensä käytät elementti jono. Sillä array, joka on nimi, jos haluat käyttää array nimi saada elementti, kirjoitetaan jotain, $ arr [2] jossa nimi array (muuttuja) onarr. Kun sinulla on viittaus array, teet samanlainen asia, mutta henkselit seuraavasti: $ {$ Aref} [2] Eli vaihdat, sov kanssa {$ Aref}. Toinen tapa käyttää array on sovellettavissa, kun haluat elementti array (tämä on mitä teet suurimman osan ajasta). Tällä tavalla, et aloittaa edellisen skalaari merkki, $. Voit myös jättää olkaimet.
Voit kuitenkin seurata array viittaus muuttuja, nuolella, -> (miinusmerkki jälkeen suurempi kuin -merkki), kuten seuraavassa esimerkissä: $ Aref -> [2] käyttäminen tällä tavalla ei riipu siitä array viittaus oli alkaen array, joka on nimi tai nimettömänä array. Lue ja yrittää seuraava koodi: käytämme tiukkoja; print "Content-Type: text /html \\ n \\ n"; minunarr = ("yksi", "kaksi", 3, 4); minun $ Aref = \\arr; print $ {$ Aref} [1]; print "minun $ arRef = [" yksi "," kaksi ", 3, 4] tulostaa $ arRef -> [3], Hash ja viite Harkitse seuraavia hash luominen: minun% ha = (Apple =>" violetti ", Banana => "keltainen", Päärynä => "vihreä", Lemon => "vihreä"), tehdä viittaus ulos% ha, sinun täytyy sen eteen \\ merkki, seuraava ilmoitus havainnollistaa: my $ href = \\% ha; Nimetön Hash Edellä osiossa, tarvitset kaksi ilmoitusta sen keksiä hash.
Ensimmäisessä lausumassa antaa array nimi,% ha. On mahdollista käyttää vain yhden lausunnon keksiä hash. Tällöin hash ei ole nimeä. Se vain on viittaus alueelle muistissa että on hash. Seuraava lausunto kuvaa tätä: minun $ href = {Apple => "violetti", Banana = > "keltainen", Päärynä => "vihreä", Lemon => "vihreä"}; Huomaa tässä, että meidän on olkaimet rajata hash elementit eikä kaareva kannattimet luetteloon ennen. Tässä tilanteessa, henkselit palauttaa viite ( muistiosoite) ja hash. Tämä viittaus palasi osoitetaan skalaarimuuttujan, $ href.
Sinun ei tarvitse \\ merkki täällä, koska hash ei ole nimeä ja \\ tulisi käyttää edessä nimi (muuttuja) palauttaa viite. Huomautus: Muuttuvanäyttöisillä joka pitää viittaus on skalaarimuuttujan. Joten viittaus array tai hash hallussa skalaarimuuttujan. Viittaus skalaari on edelleen hallussa skalaarimuuttujan. Käyttämällä Hash Viittaus Yksi tapa saada hash alkaen hash viittaus (muuttuja pitämällä viittaus) on käyttää olkaimet. Edellä viittaus, kirjoitetaan,% {$ Aref} Aloitat -merkillä,%, koska olemme tekemisissä hash. Tämän jälkeen olkaimet.
Sisällä olkaimet, sinulla on muuttuja, joka pitää viittaus. Sinun eivät yleensä käytä hash kokonaisuutena. Voit yleensä käyttää arvo hash. Saat hash joka on nimi, jos haluat käyttää hash nimi saada arvoa, kirjoitetaan jotain, $ ha {"avain"} jossa nimi hash (muuttuja) on $ ha. Kun sinulla on viittaus hash, teet samanlainen asia, mutta henkselit seuraavasti: $ {$ href} {"avain"} Eli vaihdat, ha kanssa {$ href}. Toinen tapa käyttää hash on sovellettavissa, kun haluat elementti hash (tämä on mitä teet suurimman osan ajasta). Tällä tavalla, et aloittaa edellisen skalaari merkki, $.
Voit myös jättää olkaimet. Voit kuitenkin seurata array viittaus muuttuja, nuolella, ->, kuten seuraavassa esimerkissä: $ href -> {"avain"} käyttäminen tällä tavalla ei riipu siitä hash viittaus oli peräisin hash, jonka nimi tai anonyymi hash. Lue ja yrittää seuraava koodi: käytämme tiukkoja; print "Content-Type: text /html \\ n \\ n"; minun% ha = (Apple => "violetti", Banana => "keltainen", Päärynä => "vihreä", Lemon => "vihreä"); minun $ href = \\% ha; print $ {$ href} {Apple-}; print "minun $ haRef = {Apple =>" violetti ", Banana =>" keltainen ", Päärynä =>" vihreä ", Lemon =>" vihreä "}; tulostaa $ haRef -> {" Banana "}; Pass väitettään Viittaus Aliohjelma Lue ja yrittää seuraava koodi: käytä tiukka, tulostaa "Content-Type: text /html \\ n \\ n"; minun% ha = (Apple => "violetti", Banana => "keltainen"); sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2], "", $ _ [3], "", $ _ [4], "", $ _ [5], ""} mySub ("yksi", "kaksi",% ha), In toiminto soittaa, ensimmäinen argumentti on "yksi", toinen argumentti on "kaksi" ja kolmas väite on% hehtaaria.
Heti kun toiminto määritelmä alkaa suoritus, "yksi" tulee ensimmäinen arvo_, "kaksi" tulee toinen argumentti_. Sitten erät hash on litistetty ulos muualla arvojen_: Minun tietokone, Apple tulee viides arvo_ ja tämä ei ole hyvä idea, koska Apple on todella ruutu. violetti tulee kuudes arvo_ minun tietokone. Banana tulee kolmas arvo_ minun tietokone . Minun tietokone, keltainen tulee neljäs arvo_. Huomaa, että hash väite (% ha) kutsuvan toiminto ei ole viittaus. Tämä aiheuttaa kaksi ongelmaa. Erät hash on litistetty ulos_ jono.
Myös hash kohteita_ array eivät ole järjestyksessä, ne kirjoitetaan luomiseen hash. Samanlainen ongelma ilmenee jono. Tämän ongelman ratkaisemiseksi, joka on säilyttää rakenteen hash tai array kun välitetään toiminnon, sinun on läpäistävä hash tai joukko viittaamalla. Seuraava koodi kuvaa tätä. käytämme tiukkoja; print "Content-Type: text /html \\ n \\ n"; minun% ha = (Apple => "violetti", Banana => "keltainen"); sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2] -> {Apple-}, "", $ _ [2] -> {"Banana"} ; } MySub ("yksi", "kaksi", \\% ha); Kolmas argumentti funktiokutsun on viittaus hash.
Tämä saavutettiin edellisen hash muuttujan nimen \\ Suluissa argumenttien. Suorittaessaan toiminnon määritelmän, on vain kolme arvot_ array nyt. Ensimmäinen arvo array on ensimmäinen argumentti funktiokutsun; että on kunnossa. Toinen arvoa matriisin on toinen argumentti funktiokutsun; että on kunnossa. Nyt kolmas arvoa matriisin on viittaus hash; joka on hyväksytty. Tästä viittaus, voit saada kaikki arvot hash. Huomaa, miten kaksi arvot hash oli sai edellä funktion määritelmän.
Kun ohitat array tai hash argumenttina tavallisesti toimintoon, voit päätyä kaksi kopiota kohteita array tai hash: yksi kopio eriä jää array tai hash muuttuja. Muut kopio kohteita ovat_ array, kun funktiota kutsutaan. Edellä mainituissa koodi, rakenne hash on säilytetty ja sinulla on vain yksi kopio hash eriä, jotka ovat kuin luotu (määritelty) hash. Kuvan alkuperäinen hash kanssa sen rakenne on tietenkin säilytettävä. Jos olet määrittänyt hash viittaus muuttuja (skalaari), voit silti käyttää muuttujaa (joka pitää viite) kuin argumentti funktiokutsun.
Seuraava koodi kuvaa tätä: käytä tiukka; print "Content-Type: text /html \\ n \\ n"; minun% ha = (Apple => "violetti", Banana => "keltainen"); minun $ href = \\% ha; sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2] -> {Apple-}, "", $ _ [2] ->