Introduktion till ActivePerl särskilda variabler Grunderna i ActivePerl - Del 14 Inledning Detta är en del 14 av min serie, Grunderna i ActivePerl. I denna del av serien, tittar vi på vad som kallas ActivePerl Special variabler. Dessa är variabler som redan har deklarerats i den tolk för dig. Du behöver inte deklarera dem igen. Under vissa förhållanden, variablerna förvärva vissa värden. När du lär dig Perl, du lär dig namnen på dessa variabler, de värderingar de förvärvar och de förhållanden under vilka de får värdena.
Vilken som helst av dessa variabler kan delas in i en av de tre datatyper. Så någon av dessa variabler är en skalär eller array eller hash. Obs: Om du inte kan se koden, eller om du tror att något saknas (bruten länk, bild frånvarande), bara att kontakta mig på [email protected]. Det vill säga, kontakta mig för minsta problem du har om vad du läser. Två exempel I den här delen av serien, tittar vi på två av de variabler som är $ _ och_. Den förstnämnda är en skalär; den senare är en array. Den senare nämndes i en av de tidigare kapitlen. Namnet på den förstnämnda är _.
Den föregås av $ eftersom det är en skalär, i variabelnamnet. Namnet senare är också _. Den föregås av @ eftersom den är en array. Det finns många sådana variabler som redan har deklarerats för dig i ActivePerl tolken. Det sätt du kommer att deklarera din egen variabel, är bara att börja med det reserverade ordet, min, sedan ett mellanslag, följt av $ @ eller% och dem namnet på den variabel, sedan ett semikolon för att göra ett uttalande. Efter det som du skriver din kod din variabel kommer att förvärva värde (eller värden) beroende på koden du skriver.
Dessa särskilda variabler beter sig på ett liknande sätt, med den skillnaden att de redan har deklarerats för dig i tolken. Dessutom har de förhållanden under vilka de kommer att förvärva vissa värden redan fastställts i tolken. De speciella värden de förvärvar beror på tillståndet. Du lär dig de villkor och de förvärvade värden som du lär dig ActivePerl. I denna del av serien, vi lär oss de villkor och förvärvade värden för $ _ och_, på grundläggande nivå. Namnen på dessa speciella variabler som skiljetecken tecken. Några av dem är faktiskt skiljetecken tecken, som med $ ?.
Oroa dig inte för $? för nu. I allmänhet namnen på dessa variabler är inte troligt de namn du vill ge till din egen användar deklarerade variabler. Du normalt skulle ge ett namn till en variabel som du kan komma ihåg, som ibooks, där du vill böcker betyda en rad böcker. Så knappast skulle det finnas konflikter mellan dina variabler och dessa speciella variabler. Den $ _ Variabel Syntaxen för foreach konstruktionen, foreach Vairable (List) {#do något} Om Variabel (vilket är en skalär) i syntaxen inte skrivit, sedan $ _ skulle ta sin plats.
Du kan sedan använda $ _ inuti blocket som du skulle använda, variabel. Tänk på följande kod fragment: foreach min $ post (theArr) {print $ post "} Om du inte skriver $ objektet variabeln, då den speciella variabeln $ _ skulle ta platsen för $ objektet variabeln Blocket. av koden skulle behöva skrivas som, foreach (theArr) {print $ _ "} var $ post inte skrivit in den första raden i konstruktionen, så inuti blocket, $ _ användes i dess ställe.
Läs och prova följande kod: använd strikt; print "Content-Type: text /html \\ n \\ n"; mintheArr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "SV58", "TG45", "RE69"); foreach (theArr) {print $ _ "} Jag hoppas att du nu uppskatta tillstånd och värderingar på det sätt som $ _ har uppträtt. Det finns andra situationer i ActivePerl där $ _ används. Situationerna är liknande den som just beskrivits . Den_ Variabel När du ringer ett underprogram (funktion) med argument, när funktionen att utföras och alla argument kommer att vara medlemmar i det särskilda variabel,_.
Så inom en subrutin arrayen_ innehåller argument som skickas till den subrutinen. Denna grupp variabel har redan i förväg deklarerade i tolken. Du behöver inte förklara det igen. När en subrutin anropas värdena i denna samling blir värdena för de argument som skickas till subrutinen. Matrisen ._ fylls, med början från det första indexet
(0) Om subrutin anropas utan argument, då gruppen kommer att vara tom Läs och prova följande kod.
Använd strikt, print "Content-Type: text /html \\ n \\ n ", under mySub {print $ _ [0]"} mySub ("en", "två", "tre"); Subrutinen anropas med tre argument ("en", "två", "tre"). När subrutinen exekveras, är värdet av det första elementet av_ värdet av det första argumentet är värdet av det andra argumentet värdet hos det andra elementet, och den för det tredje elementet är värdet av det tredje argumentet . Obs: Eftersom namnet på arrayen,_ är _ elementen i uppsättningen, är $ _ [0], $ _ [1], $ _ [2], etc.
Passing listor som argument för att subrutiner Frågan du kanske är detta: vad händer om argumentet passerat är en array eller hash. Om argumentet är en array eller hash, i den funktion som den kollapsar (blir platt) att förlora sin identitet och dess innehåll blir värden på_ uppsättningen. Låt oss demonstrera detta med ett experiment.
Läs och prova följande kod: använd strikt; print "Content-Type: text /html \\ n \\ n"; min $ scal = "en"; minarr = ("två", "tre"); min% HSH = (DDD => "fyra", EEE =>