מערכים בפרל
בחלק זה של המדריך לפרל נלמד על מערכים בפרל. נתחיל בסקירה כללית על מערכים ואיך הם עובדים בפרל. בהמשך נראה הסברים מפורטים יותר.
שמות משתנים של מערכים בפרל תמיד מתחילים בסימן: @.
כיוון שאנחנו מתעקשים להשתמש ב strict יש להכריז על המשתנים באמצעות מלת המפתחhl>my לפני השימוש הראשון בהם.
זיכרו שכל הדוגמאות מניחות שהקובץ שלכם מתחיל כך:
use strict; use warnings; use 5.010;
הכרזה על מערך:
my @names;
הכרזה על מערך חהצבת ערכים במערך:
my @names = ("Foo", "Bar", "Baz");
בדיקת ערכים במערך
use Data::Dumper qw(Dumper); my @names = ("Foo", "Bar", "Baz"); say Dumper \@names;
הפלט הוא:
$VAR1 = [ 'Foo', 'Bar', 'Baz' ];
לולאות foreach ומערכים בפרל
my @names = ("Foo", "Bar", "Baz"); foreach my $n (@names) { say $n; }
התואצה היא הדפסת:
Foo Bar Baz
גישה לאלמנט במערך
my @names = ("Foo", "Bar", "Baz"); say $names[0];
שימו לב שכאשר ניגשים לאלמנט בודד במערך הסיגיל ההתחלתי משתנה מ- @ ל- $. במבט ראשון זה עלול לבלבל, אבל אם חושבים על זה, אז הסיבה ברורה.
@ מסמן רבים ו- $ מסמן יחיד. כשניגשים לאלמנט בודד במערך הוא מתנהג בדיוק כמו משתנה סקלרי.
אינדקסים במערך
אינדקסים של מערך מתחילים מ-0 האינדקס הגדול ביותר במערך תמיד יימצא במשתנה שנקרא $#name_of_the_array. ולכן
my @names = ("Foo", "Bar", "Baz"); say $#names;
ידפיס 2 כיוון שהאינדקסים הם 0,1 ו-2
האורך, או הגודל של מערך
בפרל אין פונקציה שמיועדת להחזיר את גודלו של מערך, אבל יש מספר דרכים להשיג את הנתון. גודלו של המערך הוא תמיד אחד יותר מהאינדקס הגדול ביותר. במקרה שראינו $#names+1 הוא הגודל או האורך של המערך.
אפשרות נוספת היא להשתמש בפונקציה scalar כדי לקבל את גודלו של המערך:
my @names = ("Foo", "Bar", "Baz"); say scalar @names;
ידפיס 3.
הפונקציה scalar היא מעין פונציית המרה, שבין היתר, ממירה מערך לערך סקלרי. עקב החלטה שרירותית, אך נבונה, ההמרה מחזירה את גודלו של המערך.
שימוש בלולאה כדי לעבור על האינדקסים של המערך
קיימים מקרים שבהם מעבר על ערכי המערך אינו מספיק. ייתכן שנצטרך גם את הערך וגם את האינדקס של הערך. במקרה כזה נצטרך לרוץ בלולאה על האינדקסים, ולקבל את הערכים באמצעות האינדקסים:
my @names = ("Foo", "Bar", "Baz"); foreach my $i (0 .. $#names) { say "$i - $names[$i]"; }
מדפיס:
0 - Foo 1 - Bar 2 - Baz
Push למערך פרל
push מוסיף ערך חדש בסוף המערך, ובכך מגדיל את המערך:
my @names = ("Foo", "Bar", "Baz"); push @names, 'Moo'; say Dumper \@names;
התוצאה היא:
$VAR1 = [ 'Foo', 'Bar', 'Baz', 'Moo' ];
Pop ממערך פרל
pop לוקח את האלמנט האחרון של מערך:
my @names = ("Foo", "Bar", "Baz"); my $last_value = pop @names; say "Last: $last_value"; say Dumper \@names;
התוצאה היא:
Last: Baz $VAR1 = [ 'Foo', 'Bar', ];
shift על מערך פרל
shift מחזיר את הערך השמאלי ביותר של המערך ומזיז את כל שאר האלמנטים מקום אחד שמאלה.
my @names = ("Foo", "Bar", "Baz"); my $first_value = shift @names; say "First: $first_value"; say Dumper \@names;
התוצאה היא:
First: Foo $VAR1 = [ 'Bar', 'Baz', ];
Published on 2013-10-15