Основи на Perl/Основни типове данни
Основните типове данни в Perl са скаларна променлива, масив и хеш
Скаларна променлива
редактиранеТова е единична стойност - число, низ или препратка. Означава се със сайджил[1] "$" (Стилизирано S, ot англ. scalar - скалар). Примери за скаларна променлива са:
$x = 5;
$name = "Мики";
Масив
редактиранеМасивът подредено множесво от скалари (наричат се стойности на масива). Означавани последователно, започвайки от 0. Тези означения се наричат ключове на масива. Сайджилът е "@" (Стилизирано А, от англ. array - масив). Важно е да разберете, че със споменатият по-горе сайджил "$" се означават не само скаларните променливи, а всякакви скалари, т.е. когато достигате определен елемент на масив се използва "$", а когато достигате целия масив се използва "@". Когато достигате до определен елемент на масива, ключът трябва да е ограден със средни (квадратни) скоби:
@numbers = (3,26,5,71,90);
$numbers[5] = 32; #Добавя шести елемент на масива
@fruits = ("ябълка","круша","портокал","лимон");
print "$numbers[2], $fruits[2]";
Това ще отпечата третите елементи на двата масива, защото броенето започва от 0. Т.е. за да достигнете първият елемент на масива трябва да използвате $array[0], вторият - $array[1] и т.н.
Отпечатва:
5, портокал |
Хеш
редактиранеХешът (или асoциативен масив) е неподредено множество от двойки от скалари, състоящи се от ключ и стойност. Означава се със % (Можете да мислите за него така - двете кръгчета представляват съответно един ключ и една стойност). Когато достигате до определен елемент на хеша, ключът трябва да е ограден със големи (къдрави) скоби:
%file1 = (
"име" => "Мики",
"фамилия" => "Маус",
"град" => "Гладсгоу");
%file2 = ("име", "Гуфи", "фамилия", "Гууф", "град", "Дъкбург");
$file1{"град"} = "Дъкбург"; #Променя стойността на елемента, означен с ключ "град" в хеша file1
print "Досие 1:\n
Име: $file1{'име'}\n
Фамилия: $file1{'фамилия'}\n
Град: $file1{'град'}\n\n
Досие 2:\n
Име: $file2{'име'}\n
Фамилия: $file2{'фамилия'}\n
Град: $file2{'град'}";
Знакът \n означава нов ред. Горе са показани двата начина за записване на масив.
Отпечатва:
Досие 1:
Име: Мики Фамилия: Маус Град: Дъкбург
Име: Гуфи Фамилия: Гуф[2] Град: Дъкбург |
Именуване
редактиранеПравилата за именуване на скаларни променливи, масиви и хешове (както и на други типове данни, за които ще се говори по-нататък) са следните:
- Може да съдържа латинските букви a-z и задължително трябва да започва с такава
- Може да съдържа цифри
- Може да съдържа долни черти (_)
Низове
редактиранеНизовете се ограничават с единични или двойни кавички в зависимост от случая. Най-общо казано, двойните кавички ви позволяват да интерполирате променливи, а единичните - не. Интерполацията е вмъкването на съдържанието на променлива на мястото на нейното име, предшествано със съответния сайджил.
$name = "Мики";
print "Здрасти, $name\n";
print 'Здрасти, $name';
Отпечатва:
Здрасти, Мики
Здрасти, $name |
Ако ви се наложи в низ с двойни кавички да отпечатате знак за долар или двойни кавички, използвайте обратно наклонена черта (\) пред тях. Така те няма да се опитат да интерполират променлива или да затворят низа, а просто ще се отпечатат. По същата логика в низ с единични кавички, ако Ви се наложи да използвате единични кавички, напишете \ пред тях.
print "\"Струва \$200\", каза ни продавачката";
Отпечатва:
"Струва $200", каза ни продавачката |
Упражнения
редактиране- Какво не е наред в следният фрагмент:
@names = ("Мики", "Гуфи"); print "Здравей, @names[1]";
- Какво не е наред в следният фрагмент:
%favsports = ( "Мики" => "Голф", "Гуфи" => "Хокей"); print "Любимият спорт на Мики е $favsports{"Мики"}, а на Гуфи - $favsports{"Гуфи"}.\n";
- ↑ Сайджил(Sigil) се нарича знак, който се поставя пред името, за означаване на типа данни
- ↑ Фамилията му е такава според http://en.wikipedia.org/wiki/Goofy