Основи на 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:

Име: Гуфи

Фамилия: Гуф[2]

Град: Дъкбург

Именуване[редактиране]

Правилата за именуване на скаларни променливи, масиви и хешове (както и на други типове данни, за които ще се говори по-нататък) са следните:

  • Може да съдържа латинските букви a-z и задължително трябва да започва с такава
  • Може да съдържа цифри
  • Може да съдържа долни черти (_)

Низове[редактиране]

Низовете се ограничават с единични или двойни кавички в зависимост от случая. Най-общо казано, двойните кавички ви позволяват да интерполирате променливи, а единичните - не. Интерполацията е вмъкването на съдържанието на променлива на мястото на нейното име, предшествано със съответния сайджил.

$name = "Мики";
print "Здрасти, $name\n";
print 'Здрасти, $name';

Отпечатва:

Здрасти, Мики

Здрасти, $name

Ако ви се наложи в низ с двойни кавички да отпечатате знак за долар или двойни кавички, използвайте обратно наклонена черта (\) пред тях. Така те няма да се опитат да интерполират променлива или да затворят низа, а просто ще се отпечатат. По същата логика в низ с единични кавички, ако Ви се наложи да използвате единични кавички, напишете \ пред тях.

print "\"Струва \$200\", каза ни продавачката";

Отпечатва:

"Струва $200", каза ни продавачката

Упражнения[редактиране]

  • Какво не е наред в следният фрагмент:
@names = ("Мики", "Гуфи");
print "Здравей, @names[1]";
  • Какво не е наред в следният фрагмент:
%favsports = (
"Мики" => "Голф",
"Гуфи" => "Хокей");
print "Любимият спорт на Мики е $favsports{"Мики"}, а на Гуфи - $favsports{"Гуфи"}.\n";

  1. Сайджил(Sigil) се нарича знак, който се поставя пред името, за означаване на типа данни
  2. Фамилията му е такава според http://en.wikipedia.org/wiki/Goofy