A dataspråket inneholder funksjoner, variabler og kontroll strukturer . Perl funksjon bibliotek inneholder " hver" funksjon . En av dens kontroll struktur kommandoer kalles foreach . Det faktum at man er en funksjon og den andre er en kontroll struktur kommandoen betyr at det er en fundamental forskjell i måten de to er påberopt , til tross for en liten likhet i deres bruk. Parameter Struktur
" hver" funksjonen utfører en oppgave hver gang den blir kalt , og den returnerer to verdier . Funksjonen fungerer på en hash tabell som inneholder en etikett (kalt en "nøkkel ") og en verdi. I en tabell med en liste som Navn: Julie , Alder : 45, Job : Singer , returnerer " hver" funksjon "Name " og " Julie " første gang den blir kalt . Slik at dataene som ligger til " hver" funksjon opererer må ha en struktur som omfatter nøkkel /verdi- parene .
" Foreach "-kommandoen er en looping konstruksjon . Den opererer på en matrise, som er en rett liste av elementer, uten nøkler . Et eksempel på en slik matrise vil være Bob , Pete , Jane , Dawn , i en matrise kalt "navn ".
Scope
Funksjoner utføre én gang hver gang de er kalt. De vanligvis forlate staten sine parametere som de var da de ble kalt . " Hver" er annerledes i denne sammenheng, fordi det fremskritt pekeren indikerer det aktuelle elementet i hash table den mottar som parameter . Dette betyr at hver gang funksjonen kalles , vil den returnere den neste paret i listen. Når den har nådd slutten av listen , melder det neste tomme verdier . Tiden etter at , rapporteres det første element i tabellen. Den " foreach " konstruktet returnerer pekeren matrise til sin opprinnelige stilling ved det første element i matrisen . påfølgende anrop til " foreach , " hvis du bruker den samme array, vil starte fra begynnelsen igjen .
Process
" foreach " konstruere fungerer gjennom elementene i en matrise før den har behandlet det siste elementet . Kommandoen etterfølges av braketter som inneholder alle instruksjoner som skal utføres på hvert element i matrisen . Som " hver" funksjon , fremskritt det pekeren i tabellen til neste element . Men " alle " har å bli kalt for hvert element i tabellen , mens " foreach " looper gjennom hvert element automatisk til den når enden av tabellen .
Progresjon
" hver "-funksjonen skaper ikke et program struktur . Det er avhengig av andre kommandoer for å sikre at den startes nok ganger til å behandle alle postene i en gitt hash table . Det må tas med i instruksjonene utført innenfor en loop. Den " foreach "-kommandoen er en av de konstruksjoner som gir " hver" funksjonen med looping mekanismen den mangler .