In Perl gebruiken mensen termenlijst en array door elkaar, maar er is een verschil. De lijst is de gegevens (geordende verzameling van scalaire waarden) en de array is een variabele die de lijst bevat.
Hoe een array definiëren?
Arrays worden voorafgegaan door een @ -teken. Dit is hoe je een array definieert -
@friends = ("Ajeet", "Chaitanya", "Rahul");
Dit is de reeks strings die drie strings bevat. Een andere manier om hetzelfde te doen is:
@friends = qw (Ajeet Chaitanya Rahul); #hetzelfde als hierboven
Opmerking: qw staat voor aanhalingstekens, met qw kunt u de aanhalingstekens vermijden en typt u minder.
Tijdens het leren van Perl kunt u enkele voorbeelden tegenkomen, waarbij u het volgende soort matrixdefinitie ziet:
@friends = qw / Ajeet Chaitanya Rahul /; #hetzelfde als hierboven
Dit komt omdat je met Perl elk leesteken als scheidingsteken kunt kiezen.
Alle volgende verklaringen zijn hetzelfde:
@friends = qw / Ajeet Chaitanya Rahul /; @friends = qw! Ajeet Chaitanya Rahul !; @friends = qw; @friends = qw {Ajeet Chaitanya Rahul}; @friends = qw [Ajeet Chaitanya Rahul];
Opmerking: het scheidingsteken voor openen en sluiten moet hetzelfde zijn.
Toegang tot array-elementen
U moet arrays in een andere programmeertaal hebben gebruikt, zoals C, C ++, Java enz. Het basisconcept van array is hier hetzelfde. Laten we een voorbeeld nemen om te begrijpen hoe een array te definiëren en hoe toegang te krijgen tot de elementen ervan.
#! / Usr / bin / perl @friends = ("Ajeet", "Chaitanya", "Rahul"); print "\ $ vrienden [0] = $ vrienden [0] \ n"; print "\ $ friends [1] = $ friends [1] \ n"; print "\ $ friends [2] = $ friends [2] \ n";
Output:
$ friends [0] = Ajeet $ friends [1] = Chaitanya $ friends [2] = Rahul
Zoals u in het bovenstaande programma kunt zien, zijn arrays voorafgegaan door het @ -symbool . Omdat afzonderlijke array-elementen niets anders zijn dan scalaren, worden ze voorafgegaan door een $ -symbool .
Bereik operator:
Bereikoperator wordt aangegeven met dubbele punten “..”. Deze operator wordt gebruikt voor het maken van opeenvolgende lijsten. Bijvoorbeeld:
#! / Usr / bin / perl @num = (3..9); # hetzelfde als (3, 4, 5, 6, 7, 8, 9) foreach $ temp (@num) {"$ temp \ n" afdrukken; }
Output:
3 4 5 6 7 8 9
Laten we nog een paar voorbeelden nemen om de bereikoperator te begrijpen:
(2.9..7.9) # hetzelfde als (2, 3, 4, 5, 6, 7), waarden na decimaal worden afgekapt (9..3) # lege lijst, werkt alleen in oplopende volgorde (1, 3..6, 10, 12..14) # hetzelfde als (1, 3, 4, 5, 6, 10, 12, 13, 14),
Operators: pop en push
pop-operator verwijdert het laatste element uit een array en retourneert het. Laten we een voorbeeld nemen om te begrijpen hoe pop-operator werkt:
#! / Usr / bin / perl @num = (3..7); # hetzelfde als (3, 4, 5, 6, 7) $ n1 = pop (@num); # $ n1 is 7, array is (3, 4, 5, 6) $ n2 = pop (@num); # $ n2 is 6, array is (3, 4, 5) print "\ $ n1 is: $ n1 \ n"; print "\ $ n2 is: $ n2 \ n"; print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; } pop @num; # 5 wordt verwijderd, array is (3, 4) print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; }
Output:
$ n1 is: 7 $ n2 is: 6 array heeft nu: 3 4 5 array heeft nu: 3 4
push-operator voegt een element toe aan het einde van de reeks.
Voorbeeld:
#! / Usr / bin / perl @num = (10..12); # hetzelfde als (10, 11, 12) push (@num, 9); # array is (10, 11, 12, 9) push (@num, 6); # array is (10, 11, 12, 9, 6) print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; } @ num2 = (11, 22, 33); push (@num, @ num2); # nog een array toevoegen aan het einde print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; }
Output:
array heeft nu: 10 11 12 9 6 array heeft nu: 10 11 12 9 6 11 22 33
Operators: shift en unshift
Zoals we hierboven hebben gezien, doen die push- en popoperators het toevoegen en verwijderen aan het einde van de array. De shift en unshift voert een bewerking uit aan het begin van de array.
ploegendienst:
shift-operator werkt op dezelfde manier als pop-operator, maar in tegenstelling tot pop-operator voert het de bewerking uit aan het begin van de array.
#! / Usr / bin / perl @num = (3..7); # hetzelfde als (3, 4, 5, 6, 7) $ n1 = shift (@num); # $ n1 is 3, array is (4, 5, 6, 7) $ n2 = shift (@num); # $ n2 is 4, array is (5, 6, 7) print "\ $ n1 is: $ n1 \ n"; print "\ $ n2 is: $ n2 \ n"; print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; } shift @num; # 5 wordt verwijderd, array is (6, 7) print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; }
Output:
$ n1 is: 3 $ n2 is: 4 array heeft nu: 5 6 7 array heeft nu: 6 7
Unshift-operator:
unshift-operator werkt op dezelfde manier als push-operator, maar in tegenstelling tot push-operator voert deze de bewerking uit aan het begin van de array.
#! / Usr / bin / perl @num = (10..12); # hetzelfde als (10, 11, 12) unshift (@num, 9); # array is (9, 10, 11, 12) unshift (@num, 6); # array is (6, 9, 10, 11, 12) print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; } @ num2 = (11, 22, 33); unshift (@num, @ num2); # nog een array toevoegen aan het begin print "array heeft nu: \ n"; foreach $ temp (@num) {"$ temp \ n" afdrukken; }
output:
array heeft nu: 6 9 10 11 12 array heeft nu: 11 22 33 6 9 10 11 12
splice-operator
In het bovenstaande gedeelte hebben we geleerd hoe we push-, pop-, shift- en unshift-bewerkingen op de array kunnen uitvoeren. Er is echter een beperking met deze operators, ze werken alleen aan het begin van de array of aan het einde van de array. Wat als we een operatie in het midden van de array willen uitvoeren? dat is waar de splice-operator in beeld komt.
syntaxis:
splice @array_name, s, l, @another_array
De splice-operator kan maximaal vier argumenten aannemen.
Het eerste argument is de arraynaam, hier geven we de array op waarop we de bewerking uitvoeren
tweede argument is het uitgangspunt, zoals ik hierboven zei, je kunt de operatie in het midden van de array uitvoeren. Dit geeft het startpunt van de bewerking aan.
Het derde argument is de lengte
vierde argument is een andere lijst of array.
Laten we enkele voorbeelden nemen om dit te begrijpen:
Voorbeeld 1: slechts twee argumenten in splice
@myarray = qw (Rahul, Joe, Ajeet, Tim, Lisa); @myvar = splice @array, 2; # verwijdert alles na Ajeet # @myarray is qw (Rahul, Joe, Ajeet) # @myvar is qw (Tim, Lisa)
Het derde en vijfde argument van de splice-operator zijn optioneel. In het bovenstaande voorbeeld hebben we slechts twee argumenten opgegeven, array en startpunt. Net als bij array begint de index van de splice-operator bij 0, wat betekent dat Ajeet het startpunt is in het bovenstaande voorbeeld. Als we slechts twee argumenten opgeven, verwijdert de splice-operator alles na het startpunt.
Voorbeeld 2: drie argumenten
Het derde argument geeft de lengte aan van de verwijderde lijst met elementen. In het bovenstaande voorbeeld hebben we geen lengte opgegeven, daarom is alles na het startpunt verwijderd. Laten we nu eens kijken wat er gebeurt als we het derde argument geven.
@myarray = qw (Rahul, Joe, Ajeet, Tim, Lisa); @myvar = splice @array, 2, 1; # verwijdert slechts één element na Ajeet # @myarray is qw (Rahul, Joe, Ajeet, Lisa) # @myvar is qw (Tim)
Voorbeeld 3: vierde argument
Het vierde argument is een andere lijst of een array die we in onze array gaan invoegen.
@myarray = qw (Rahul, Joe, Ajeet, Tim, Lisa); @myvar = splice @array, 2, 1, qw (Harsh, Alisha); # verwijdert slechts één element na Ajeet # voegt de verstrekte lijst op dezelfde positie in # @myarray is qw (Rahul, Joe, Ajeet, Harsh, Alisha, Lisa) # @myvar is qw (Tim)
Voorbeeld 4: Wat als we niets willen verwijderen, alleen toevoeging
Als u niets wilt verwijderen, wilt u alleen enkele elementen in het midden van een array toevoegen, dan kunt u lengte opgeven als 0.
@myarray = qw (Rahul, Joe, Ajeet, Tim, Lisa); @myvar = splice @array, 2, 0, qw (Harsh, Alisha); # verwijdert niets # voegt de verstrekte lijst in bij het startpunt # @myarray is qw (Rahul, Joe, Ajeet, Harsh, Alisha, Tim, Lisa) # @myvar is qw ()
De omgekeerde operator
De reverse-operator neemt een reeks elementen (of lijst) als invoer en retourneert deze in omgekeerde volgorde.
Bijvoorbeeld:
@myarray = 10..15; # hetzelfde als (10, 11, 12, 13, 14, 15) @ myarray2 = omgekeerde @myarray; # @ myarray2 heeft (15, 14, 13, 12, 11, 10) @ myarray3 = omgekeerd 5..9; # @ myarray3 heeft (9, 8, 7, 6, 5)
stel dat u de elementen van een array wilt omkeren en in dezelfde array wilt opslaan:
@myarray = 10..15; @myarray = omgekeerde @myarray;
Opmerking: als u eenvoudig de volgende verklaring schrijft, werkt deze niet.
omgekeerde @myarray;
Dit doet niets, aangezien de reverse-operator de volgorde van elementen van een array niet wijzigt, maar de lijst gewoon in omgekeerde volgorde retourneert die aan een array moet worden toegewezen.
Laat een reactie achter