*   >> Læs Uddannelse artikler >> tech >> web development

Grundlæggende om ActivePerl Reference

Grundlæggende om ActivePerl - Del 18 Introduktion Dette er en del 18 af min serie, Grundlæggende om ActivePerl. En region i hukommelsen er et sæt af på hinanden følgende hukommelsesceller. Værdier (variable indhold) holdes i hukommelsen regioner. En variabel identificerer en hukommelsesområde. En reference er en pointer til en hukommelse region, og bruges normalt, når du er mere interesseret i, hvad der er i en hukommelse region og ikke variablen. Overvej en reference som adressen på en hukommelsesområde. Dette hukommelsesområde kan have en værdi.

I denne del af serien ser vi på ActivePerl Reference. Alt er skitseret i denne tutorial er gældende for traditionel Perl. Bemærk: Hvis du ikke kan se koden, eller hvis du tror noget mangler (brudt link, billede fraværende), bare kontakte mig på [email protected]. Det vil sige, kontakt mig for det mindste problem, du har om, hvad du læser. Memory Region A hukommelsesområde er et område i computerens hukommelse, der holder værdien af ​​en variabel. Ved værdi her, jeg henvise til en skalar værdi, matrix eller hash.

Forskellige Memory Regioner med forskellige variabler overveje følgende to på hinanden følgende udsagn: min $ myVar =; "Jeg er indholdet i en stor tekstfil fra harddisken, nu i hukommelsen." min $ Avar = "Jeg er indholdet i en stor tekstfil fra harddisken, nu i hukommelsen."; Du har to forskellige variable med forskellige navne, men med de samme strengværdier. En variabel identificerer en hukommelsesområde. To forskellige variabler med to forskellige navne identificere to forskellige hukommelse regioner, alt andet lige.

I ovenstående tilfælde er de to værdier, selvom er de samme, er i to forskellige hukommelsesområder. Samme Hukommelse Region for to forskellige variabler i ActivePerl kan du kan få det samme hukommelse regionen har to forskellige variabler. De to forskellige variabler vil naturligvis identificere samme værdi. Overvej følgende fortløbende to udsagn: min $ myVar = "Jeg er indholdet i en stor tekstfil fra harddisken, nu i hukommelsen."; min $ hisVar = \\ $ myVar; For første sætning, du har en værdi tildeler variablen, $ myVar.

I den anden meddelelse, er $ myVar Forud med \\ skilt den inden de tildeles en ny variabel, $ hisVar. \\ Er en operatør. I den anden meddelelse, \\ operatør, forud for den første variabel, gør den anden variabel identificere den samme hukommelse region (samme værdi) som den første variabel. En vigtig ting at bemærke her er, at \\ $ myVar refererer til en hukommelse region. For den anden meddelelse, \\ $ myVar, med \\, er en reference (adresse på hukommelsesområde identificeret ved $ myVar). $ hisVar er en variabel, ikke en henvisning.

Vi siger $ myVar besidder en værdi (strengen), mens $ hisVar holder reference (adresse). Ved hjælp af en reference Nu hvor du har en reference, hvordan kan du få værdien af ​​hukommelsen region, en variabel refererer til? Med andre ord en variabel holder af referencen til noget hukommelse region, hvordan kan du få værdien af ​​at hukommelsen område, ved hjælp af variabel? I ovenstående tilfælde er $ hisVar holder henvisningen i regionen identificeret af $ myVar. For at få den værdi ved anvendelse $ myVar, er der ingen problemer, fordi du bare nødt til at bruge $ myVar i stedet for værdi.

For at få værdien fra variablen ($ hisVar), som har den reference, er du nødt til at bruge de {} parentes som følger: $ {$ hisVar} Her har vi at gøre med en skalar, så du begynder med skalar tegn. Dette efterfølges af et par seler. Inde i seler, har du variabel, der holder henvisningen. Følgende kode illustrerer dette: Brug streng; print "Content-Type: text /html \\ n \\ n"; min $ myVar = "Jeg er indholdet i en stor tekstfil fra harddisken, nu i hukommelsen."; min $ hisVar = \\ $ myVar; print $ {$ hisVar}; Det er du erstatter hisVar med {$ hisVar}.

Skalar og reference Ovenstående forklaring er gældende for skalarer. En lignende ting er gældende for arrays og hashes. Men med arrays og hashes, er der to måder at skabe en reference og to måder at bruge referencen. Array og reference Overvej følgende skabelse vifte: minarr = ("en", "to", 3, 4); For at gøre en reference ud afarr, du nødt til at gå forud for variabel med \\ tegn på, da følgende erklæring illustrerer: min $ Aref = \\arr; Anonym Array I ovenstående afsnit, du har brug for to udsagn med henblik på at komme med et array reference. Den første sætning giver array et navn,arr.

Nu er det muligt kun at bruge én sætning til at komme med et array. I dette tilfælde vil arrayet noget navn. Det skal blot en henvisning til regionen i hukommelsen, der har grupperingen. Følgende erklæring illustrerer dette: min $ Aref = ["en", "to", 3, 4]; Bemærk her, at vi har firkantede parenteser til at afgrænse array elementer og ikke buede beslag til listen som før. Under denne betingelse, de firkantede parenteser returnere en reference (lageradresse) til arrayet. Denne reference returnerede er tildelt til skalar variabel $ Aref.

Du behøver ikke \\ skilt den her, da array ikke har et navn og \\ bør anvendes foran et navn. Bemærk: Enhver variabel, der holder en reference er en skalar variabel. Så referencen for en matrix eller hash indehaves af en skalar variabel. Ved hjælp af en Array Henvisning En måde at få array fra en vifte reference (variabel holder reference) er at bruge seler. For ovennævnte reference, ville du skriver, @ {$ Aref} Du begynder med array tegn @, da du har at gøre med et array. Dette efterfølges af seler. Inde i seler, har du variabel, der holder henvisningen.

Du normalt ikke bruge array som helhed (som angivet ovenfor). Du bruger normalt et element fra array. For et array, der har et navn, hvis du ønsker at bruge array navn for at få et element, skal du skrive noget lignende, $ arr [2], hvor navnet på den array (variabel) erarr. Når du har en reference til den array, du gør en lignende ting, men med seler som følger: $ {$ Aref} [2] Det er du udskifter, arr med {$ Aref}. Den anden måde kan få adgang til array er gældende, når du ønsker et element fra array (dette er hvad du gør det meste af tiden).

Med denne måde, behøver du ikke starte med det foregående skalar tegn, $. Du kan også udelade seler. Men du følger, array henvisningen variabel, med en pil, -> (minustegn efterfulgt af større end tegn), som i det følgende eksempel: $ Aref -> [2] Ved hjælp af denne måde ikke afhænger af, om array henvisning var fra et array, der har et navn eller en anonym array.

Læs og prøv følgende kode: Brug streng; print "Content-Type: text /html \\ n \\ n"; minarr = ("en", "to", 3, 4); min $ Aref = \\arr; print $ {$ Aref} [1]; print "min $ arRef = [" en "," to ", 3, 4]; udskrive $ arRef -> [3]; Hash og reference Overvej følgende hash skabelse: min% ha = (Apple =>" lilla ", Banana => "gule", Pære => "grønne", Lemon => "grønne") For at gøre en reference ud af% ha, er du nødt til at gå forud for den med \\ tegn på, da følgende erklæring illustrerer: min $ HREF = \\% ha Anonym Hash I ovenstående afsnit, du har brug for to erklæringer for at komme op med en hash Den første sætning giver array et navn,% ha Det er muligt kun at anvende én sætning til at komme med en.

. ... hash I dette tilfælde vil hash ikke har et navn Det vil bare have en henvisning til regionen i hukommelsen, der har hash Følgende erklæring illustrerer dette: min $ href = {Apple => "lilla", banan = > "gule", Pære => "grønne", Lemon => "grønne"}; Bemærk her, at vi har seler at afgrænse hash elementer og ikke buede beslag til liste som før Under denne tilstand, seler returnere en reference (. hukommelse adresse) til hash. Denne henvisning returneret er tildelt til skalar variabel $ HREF.

Du behøver ikke \\ skilt den her, da hash ikke har et navn og \\ bør anvendes foran et navn (variabel) til at returnere en reference. Bemærk: Enhver variabel, der holder en reference er en skalar variabel. Så referencen for en matrix eller hash indehaves af en skalar variabel. Referencen til en skalar stadig holdes af en skalar variabel. Ved hjælp af en Hash Henvisning En måde at få hash fra en hash reference (variabel holder reference) er at bruge seler. For ovennævnte reference, skal du skrive,% {$ Aref} Du begynder med hash tegn%, da vi har at gøre med en hash. Dette efterfølges af seler.

Inde i seler, har du variabel, der holder henvisningen. Du normalt ikke bruger hash som helhed. Du bruger normalt en værdi fra hash. For en hash, der har et navn, hvis du ønsker at bruge hash navn for at få en værdi, skal du skrive noget lignende, $ ha {"nøgle"}, hvor navnet på hash (variabel) er $ ha. Når du har en henvisning til hash, du gør en lignende ting, men med seler som følger: $ {$ HREF} {"nøgle"} Det er du udskifter, ha med {$ HREF}. Den anden måde at få adgang en hash er gældende, når du ønsker et element fra hash (dette er hvad du gør det meste af tiden).

Med denne måde, behøver du ikke starte med det foregående skalar tegn, $. Du kan også udelade seler. Men du følger array henvisningen variabel, med en pil, ->, som i det følgende eksempel: $ href -> {"nøgle"} Ved hjælp af denne måde ikke afhænger af, om hash henvisning var fra en hash, der har et navn eller en anonym hash.

Læs og prøv følgende kode: Brug streng; print "Content-Type: text /html \\ n \\ n"; min% ha = (Apple => "lilla", banan => "gule", Pære => "grønne", Lemon => "grønne"); min $ href = \\% ha; print $ {$ HREF} {'Apple'}; print "min $ haRef = {Apple =>" lilla ", banan =>" gule ", Pære =>" grønne ", Lemon =>" grønne "}; udskrive $ haRef -> {'Banana'}; Pass Argument ved Henvisning til en subrutine Læs og prøv følgende kode: Brug streng; print "Content-Type: text /html \\ n \\ n"; min% ha = (Apple => "lilla", banan => "gul") sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2], "", $ _ [3], "", $ _ [4], "", $ _ [5], "";} mySub ("en", "to",% ha), I funktionen opkald, det første argument er "en", det andet argument er "to", og det tredje argument er% ha.

Så snart funktionen definition begynder henrettelse, "en" bliver den første værdi_; "to" bliver det andet argument for_ Så elementer af hash er fladet ud i resten af ​​værdierne af_:. i min computer, Apple bliver den femte værdi_ og dette er ikke en god idé, da Apple er faktisk en hash nøgle. lilla bliver den sjette værdi_ i min computer. Banana bliver den tredje værdi_ i min computer . I min computer, gul bliver den fjerde værdi_. Bemærk, at hash argument (% ha) i den kaldende funktion ikke er en reference. Dette giver anledning til to problemer. De elementer af hash er fladet ud i_ array.

Også hash poster i_ vifte er ikke i den rækkefølge, de blev skrevet i skabelsen af ​​hash. Et lignende problem opstår med matrixen. For at løse dette problem, det er at bevare strukturen i en hash eller vifte, når videregives til en funktion, du nødt til at passere hash eller array ved henvisning. Følgende kode illustrerer dette.

bruge en streng; print "Content-Type: text /html \\ n \\ n"; min% ha = (Apple => "lilla", banan => "gule"); sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2] -> {'Apple'}, "", $ _ [2] -> {'Banana'} ; } MySub ("en", "to", \\% ha); Det tredje argument i funktionen opkald er en reference til hash. Dette blev opnået ved forud variabelnavnet hash med \\ i parentes i argumenterne. Ved gennemførelsen af ​​den funktion definition, er der kun tre værdier for_ vifte nu. Den første værdi for array er det første argument i funktionen opkald; det er i orden.

Den anden værdi af array er det andet argument af funktionen opkald; det er i orden. Nu tredje værdien af ​​array er en henvisning til hash; der er accepteret. Fra denne reference, kan du få alle værdier af hash. Bemærk hvordan de to værdier af hash blev fik i den ovenstående funktion definition. Når du passerer en matrix eller en hash som argument normalt til en funktion, du ender med to kopier af de elementer i array eller hash: én kopi af elementerne forbliver i matrix eller hash variabel. Det andet eksemplar af elementerne er i_ array, når funktionen kaldes.

I ovenstående kode, er strukturen af ​​hash blevet opretholdt, og der kun er én kopi af hash elementer, som er dem af det skabte (defineret) hash. Den oprindelige hash med dens struktur er naturligvis opretholdes. Hvis du har tildelt hash henvisning til en variabel (skalar), kan du stadig bruge den variable (der holder reference) som argument i funktionen opkald.

Følgende kode illustrerer dette: Brug streng; print "Content-Type: text /html \\ n \\ n"; min% ha = (Apple => "lilla", banan => "gule"); min $ href = \\% ha; sub mySub {print $ _ [0], "", $ _ [1], "", $ _ [2] -> {'Apple'}, "", $ _ [2] ->

Page   <<       [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.