*   >> Lezen Onderwijs artikelen >> tech >> web development

Grondbeginselen van ActivePerl Reference

basisprincipes van ActivePerl - Deel 18 Inleiding Dit is deel 18 van mijn reeks, grondbeginselen van ActivePerl. Een regio in het geheugen is een reeks opeenvolgende geheugencellen. Waarden (variabele inhoud) worden bewaard in het geheugen gebieden. Een variabele identificeert een geheugen regio. Een verwijzing is een pointer naar een geheugengebied en wordt algemeen gebruikt bij meer geïnteresseerd in wat in een geheugengebied en niet variabel. Beschouw een referentie als het adres van een geheugengebied. Dit geheugen gebied kan een waarde hebben.

In dit deel van de serie, kijken we naar ActivePerl Reference. Alles die in deze handleiding is van toepassing op de traditionele Perl. Opmerking: Als u de code niet kunt zien of als u denkt dat er iets ontbreekt (gebroken link afbeelding afwezig), neem dan contact met mij op [email protected]. Dat wil contact met mij op voor het geringste probleem dat je hebt over wat je aan het lezen bent. Geheugengebied een geheugengebied is een gebied in het computergeheugen dat de waarde van een variabele bevat. Door waarde hier, verwijs ik naar een scalaire waarde, array of hash.

Verschillende Memory regio's met verschillende variabelen Beschouw de volgende twee opeenvolgende uitspraken: mijn $ myVar =; "Ik ben de inhoud van een groot tekstbestand van de harde schijf, die nu in het geheugen." mijn $ Avar = "Ik ben de inhoud van een groot tekstbestand van de harde schijf, die nu in het geheugen."; Je hebt twee verschillende variabelen met verschillende namen, maar met dezelfde reeks waarden. Een variabele identificeert een geheugen regio. Twee verschillende variabelen met twee verschillende namen te identificeren twee verschillende geheugen regio's, alles gelijk.

In het bovenstaande geval, de twee waarden, hoewel hetzelfde zijn, zijn in twee verschillende geheugengebieden. Hetzelfde Memory Gewest voor twee verschillende variabelen In ActivePerl kunt u hetzelfde geheugen regio te maken hebben twee verschillende variabelen. De twee variabelen uiteraard identificeren dezelfde waarde. Beschouw de volgende opeenvolgende twee verklaringen: mijn $ myVar = "Ik ben de inhoud van een groot tekstbestand van de harde schijf, die nu in het geheugen."; mijn $ hisVar = \\ $ myVar; Voor de eerste verklaring heb je een waarde toe te wijzen aan de variabele, $ myVar.

In de tweede verklaring, wordt $ myVar voorafgegaan met \\ teken alvorens te worden toegewezen aan een nieuwe variabele, $ hisVar. \\ Is een operator. In de tweede instructie, de \\ operator, voorafgaand aan de eerste variabele, maakt de tweede variabele identificeren dezelfde geheugengebied (dezelfde waarde) als het eerste variabele. Een belangrijk ding om hier op te merken is dat de \\ $ myVar verwijst naar een geheugen regio. Voor de tweede verklaring, \\ $ myVar, met \\, is een verwijzing (het adres van het geheugen regio geïdentificeerd door $ myVar).

$ hisVar is een variabele, geen verwijzing. We zeggen $ myVar heeft een waarde (de string), terwijl $ hisVar houdt de referentie (adres). Met behulp van een Reference Nu dat u een referentie, hoe kun je de waarde van het geheugen regio die een variabele verwijst naar te krijgen? Met andere woorden een variabele houdt de referentie van wat geheugen regio, hoe kun je de waarde van dat het geheugen regio te krijgen, met behulp van de variabele? In het bovenstaande geval wordt $ hisVar houdt de referentie van de regio geïdentificeerd door $ myVar.

Om de waarde met $ myVar te krijgen, is er geen probleem, omdat je alleen maar tot $ myVar gebruiken in plaats van de waarde. Om de waarde van de variabele ($ hisVar), die de referentie heeft te verkrijgen, moet u de {} haakjes gebruiken als volgt: $ {$ hisVar} Hier hebben we te maken met een scalaire, zodat je beginnen met de scalaire teken. Dit wordt gevolgd door een paar beugels. Binnen de bretels, heb je de variabele die de verwijzing bevat.

De volgende code illustreert dit: use strict; print "Content-Type: text /html \\ n \\ n"; mijn $ myVar = "Ik ben de inhoud van een groot tekstbestand van de harde schijf, die nu in het geheugen."; mijn $ hisVar = \\ $ myVar; afdruk $ {$ hisVar}; Dat is je hisVar vervangen door {$ hisVar}. Scalaire en Reference De bovenstaande uitleg is van toepassing op scalairen. Iets dergelijks geldt voor arrays en hashes. Echter, met arrays en hashes, zijn er twee manieren om een ​​verwijzing en twee manieren van het gebruik van de referentie.

Array en Reference Beschouw de volgende reeks creatie: mijnarr = ("één", "twee", 3, 4); Een verwijzing te maken vanarr, moet je de variabele met de \\ teken voorafgaan, zoals de volgende verklaring illustreert: mijn $ Aref = \\arr; Anoniem Array In de bovenstaande sectie, moet je twee verklaringen met het oog op de proppen te komen met een scala referentie. De eerste verklaring geeft de serie een naam,arr. Nu is het mogelijk om slechts één instructie te komen met een array. In dit geval zal de array geen naam. Het zal alleen maar een verwijzing naar de regio in het geheugen van de array.

De volgende verklaring illustreert dit: mijn $ Aref = ["één", "twee", 3, 4]; Merk hier op dat we vierkante haken aan de array elementen en niet gebogen beugels voor de lijst af te bakenen als voorheen. Onder deze voorwaarde, de haken terug verwezen (geheugenadres) aan de array. Deze referentie teruggegeven wordt aan de scalaire variabele $ AREF. Je hoeft de \\ teken hier niet nodig, omdat de array geen naam hebben en \\ moeten worden gebruikt voor een naam. Opmerking: Elke variabele die een verwijzing bevat een scalaire variabele.

Dus de referentie van een array of hash wordt gehouden door een scalaire variabele. Met behulp van een array Referentie Een manier om de matrix uit een array referentie (variabele met de referentie) krijgen is de bretels. Voor de bovenstaande referentie, zou u typt, @ {$ Aref} Je begint met de reeks teken @, omdat je te maken met een reeks. Dit wordt gevolgd door accolades. Binnen de bretels, heb je de variabele die de verwijzing bevat. Je meestal niet de matrix als geheel (zoals hierboven vermeld). U gebruikt meestal een element van de array.

Voor een array die een naam heeft, als u de naam matrix gebruiken om een ​​element te krijgen, zou je zoiets als, $ arr [2], waar de naam van de array (variabele) isarr typen. Wanneer u een verwijzing naar de array, een soortgelijke ding je maar met de beugels als volgt: $ {$ Aref} [2] Dat is je te vervangen, arr met {$ AREF}. De andere manier van toegang tot een array is van toepassing wanneer u een element uit de array (dit is wat je het meest van de tijd doen). Met deze manier hoeft u niet beginnen met de voorgaande scalaire teken $. U weglaten ook de beugels.

Echter volgt de matrix gewenste waarde, met een pijl, -> (minteken gevolgd door meer dan teken), zoals in het volgende voorbeeld: $ Aref -> [2] Met deze manier is niet van belang of de matrix werd hier uit een reeks die een naam of een anonieme array. Lees en probeer de volgende code: use strict; print "Content-Type: text /html \\ n \\ n"; Mijnarr = ("één", "twee", 3, 4); mijn $ AREF = \\arr; afdruk $ {$ Aref} [1]; print "Mijn $ arRef = [" één "," twee ", 3, 4]; afdrukken $ arRef -> [3], Hash en Reference Beschouw de volgende hash creatie: mijn% ha = (Apple =>" paars ", banaan => "geel", Peer => "green", Lemon => "green"); Om een ​​referentie te maken van% ha, je moet het vooraf met de \\ teken, als de volgende verklaring illustreert: mijn $ href = \\% ha; Anoniem Hash In de bovenstaande sectie, twee uitspraken moet je om te komen met een hash De eerste verklaring geeft de array een naam,% ha Het is mogelijk om slechts één instructie gebruiken om te komen met een.

. ... hash In dit geval zal de hash geen naam Het zal alleen maar een verwijzing naar de regio in het geheugen dat de hash heeft de volgende verklaring illustreert dit: mijn $ href = {Apple => "paars", banaan = > "geel", Peer => "green", Lemon => "green"}; Merk hier op dat we accolades om de hash-elementen en niet gebogen beugels voor de lijst af te bakenen als voorheen Onder deze voorwaarde, de beugels terug een referentie (. geheugenadres) de hash. verzoek geretourneerd wordt aan de scalaire variabele $ HREF.

Je hoeft de \\ teken hier niet nodig, omdat de hash geen naam hebben en \\ moet worden gebruikt in de voorkant van een naam (variabele) om een ​​referentie terug. Opmerking: Elke variabele die een verwijzing bevat een scalaire variabele. Dus de referentie van een array of hash wordt gehouden door een scalaire variabele. De verwijzing van een scalair is nog steeds in handen van een scalaire variabele. Met behulp van een hash Verwijzing Een manier om de hash van een hash referentie (variabele met de referentie) krijgen is de bretels.

Voor de bovenstaande referentie, zou u typt,% {$ Aref} Je begint met het hekje,%, omdat we te maken hebben met een hekje. Dit wordt gevolgd door accolades. Binnen de bretels, heb je de variabele die de verwijzing bevat. Je meestal niet de hash als geheel. U gebruikt meestal een waarde uit de hash. Voor een hash, dat een naam heeft, als u de naam hash gebruiken om een ​​waarde te krijgen, zou je iets typt zoals, $ ha {'key'}, waar de naam van de hash (variabele) is $ ha.

Wanneer u een verwijzing naar de hash, een soortgelijke ding je maar met de beugels als volgt: $ {$ href} {'key'} Dat is je te vervangen, ha met {$ href}. De andere manier van het benaderen van een hash is van toepassing wanneer u een element uit de hash (dit is wat je het meest van de tijd doen). Met deze manier hoeft u niet beginnen met de voorgaande scalaire teken $. U weglaten ook de beugels.

De matrix setpoint volgen, met een pijl, ->, zoals in het volgende voorbeeld: $ HREF -> {'key'} Met deze manier is niet van belang of de hash werd hier een hash dat een naam heeft of een anonieme hash. Lees en probeer de volgende code: use strict; print "Content-Type: text /html \\ n \\ n"; mijn% ha = (Apple => "paars", Banana => "geel", Peer => "green", Lemon => "green"); mijn $ href = \\% ha; afdruk $ {$ href} {'Apple'}; print "Mijn $ haRef = {Apple =>" paars ", Banana =>" geel ", Peer =>" green ", Lemon =>" green "}; afdrukken $ haRef -> {'Banana'}; Pass Argument door verwijzing naar een Subroutine Lees en probeer de volgende code: use strict; afdrukken "Content-Type: text /html \\ n \\ n"; mijn% ha = (Apple => "paars", Banana => "geel"); sub mySub {schrijf $ _ [0], "", $ _ [1], "", $ _ [2], "", $ _ [3], "", $ _ [4], "", $ _ [5], "";} mySub ("één", "twee",% ha); In de functie aan te roepen, het eerste argument is "één", het tweede argument is "twee" en de derde argument% ha.

Zodra de functie-definitie begint uitvoering, "één" is de eerste waarde van_; "twee" wordt het tweede argument van_ Dan de posten van de hash worden afgevlakt in de rest van de waarden van_. in mijn computer, Apple wordt de vijfde waarde van_ en dit is geen goed idee, omdat Apple is eigenlijk een hekje. paars wordt de zesde waarde van_ in mijn computer. Banana wordt de derde waarde van_ in mijn computer . In mijn computer, geel wordt de vierde waarde van_. Merk op dat de hash argument (% ha) in de roeping functie is niet een referentie. Dit geeft aanleiding tot twee problemen.

De items van de hash worden afgevlakt in de_ array. Ook de hash items in de array_ niet in de volgorde waarin ze in de creatie van de hash werden ingetypt. Een soortgelijk probleem doet zich voor bij de array. Om dit probleem op te lossen, dat is om de structuur van een hash of matrix behouden wanneer doorgegeven aan een functie, moet u de hash of matrix passeren door middel van verwijzing. De volgende code illustreert dit.

strikte gebruiken; print "Content-Type: text /html \\ n \\ n"; mijn% ha = (Apple => "paars", Banana => "geel"); sub mySub {schrijf $ _ [0], "", $ _ [1], "", $ _ [2] -> {'Apple'} "', $ _ [2] -> {" banaan "} ; } MySub ("één", "twee", \\% ha); Het derde argument in de functie oproep is een verwijzing naar de hash. Dit werd bereikt door voorafgaand aan de variabele naam hash met \\ in de haakjes van de argumenten. Bij de uitvoering van de functie-definitie, zijn er slechts drie waarden voor_ matrix kaarten. De eerste waarde van de array is het eerste argument in de functie oproep; dat is goed.

De tweede waarde van de array is het tweede argument van de functie oproep; dat is goed. Nu, de derde waarde van de matrix is ​​een verwijzing naar de hash; die wordt geaccepteerd. Vanaf deze referentie, kunt u alle waarden van de hash te krijgen. Merk op hoe de twee waarden van de hash werden kregen in de bovenstaande functie definitie. Wanneer u een array of een hash doorgeven als argument gewoonlijk om een ​​functie, eindig je met twee exemplaren van de items in de array of hash: één exemplaar van de items blijft in de array of hash variabele.

De andere kopie van de items zijn in de_ array, wanneer de functie wordt aangeroepen. In de bovenstaande code is de structuur van de hash gehandhaafd en er slechts één kopie van de hash items, waarbij die van de gemaakte (gedefinieerd) hash zijn. De oorspronkelijke hash met de structuur van natuurlijk behouden. Als u de hash verwijzing naar een variabele (scalar) toegewezen, kunt u nog steeds gebruik maken van de variabele (dat houdt de referentie) als argument in de functie aanroep.

De volgende code illustreert dit: use strict; print "Content-Type: text /html \\ n \\ n"; mijn% ha = (Apple => "paars", Banana => "geel"); mijn $ href = \\% ha; sub mySub {schrijf $ _ [0], "", $ _ [1], "", $ _ [2] -> {'Apple'} "', $ _ [2] ->

Page   <<       [1] [2] [3] [4] [5] [6] [7] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.