3. Typy danych

3.1. Zmienne

Zmienna jest podstawowym typem w Perlu. Zmienna może mieć wartość całkowitą, zmiennoprzecinkową, lub znakową. Perl ustala typ zmiennej z kontekstu. Zmienne zawsze posiadają prefiks $. Tzn.:

	$str = "Hello world!";
nie zaś

	str = "Hello world!";
W Perlu alfanumeryczny ciąg znaków bez prefiksu jest traktowany literalnie. To znaczy, że powyższe przypisanie jest równoważne "str" = "Hello world!"; Zmienne w Perlu nie musza być deklarowane. Są alokowane dynamicznie. Można się zatem odwoływać do nieistniejącej zmiennej. Domyślną wartością zmiennej jest, w zależności od kontekstu, 0 lub ciąg pusty. Zmienne znakowe użyte w kontekście liczbowym są interpolowane do ich wartości. Np.:

	$x =4;		# zmienna całkowita
	$y = "11"; 	# ciąg znaków
	$z = $x+$y;
	print $z,"\n";	# zmienna z jest typu całkowitego i równa 15
Konwersja może zachodzić również w druga strone np.:

	$answer = 42;
	print "the answer is $answer";
W tym przykładzie na ekranie pojawi się : "the answer is 42". Stałe znakowe można specyfikować przez tak zwane "tu dokumenty":

	$msg = <<_EOM_;
	  The system is going down.
	  Log off now.
	 _EOM_

3.2. Wektory zmiennych

Perl zawiera wektory (lub listy) zmiennych. Bieżącą wartość udostępnia prefiks at (@). Można również przypisać elementy wektora przez nazwę. Oto kilka sposobów :

	@numbers = (3,1,4,1,5,9);
	@letters = ("this","is","a","test");
	($word,$another_word) = ("one","two");
Można się odwoływać do poszczególnych elementów, przy czym pierwszy element ma indeks 0:

	$blah[2] = 2.718281828;
	$message[12] = "core dumped\n";
Ciąg $# używa się do znalezienia ostatniego ważnego indeksu wektora, a nie jego rozmiaru. Zaś zmienna $[ oznacza numer pierwszego elementu w każdym wektorze. Domyślną jego wartością jest 0. Można także ustawić ją np. na 1, jak to ma miejsce w Fortranie. Przykład programu informującego o ilości elementów w wektorze @a :

	$n = $#a - $[ + 1;
	print "wektor a ma $n elementow\n";
Wektory są rozwijane dynamicznie. Wystarczy przypisać wartość zmiennej $#, a dany wektor zostanie alokowany.

	$#months = 11;		# elementy 0 - 11
Perl zawiera w sobie operacje na wektorach. Niestety można definiować tylko jednowymiarowe wektory. Istnieją jednak sposoby, żeby to ominąć.

3.3. Skojarzone wektory zmiennych

Jest to najbardziej użyteczna cecha Perla. Można dzięki niej tworzyć tablice użytkowników według "login name" i tablice nazw plików. Prefiksem dla tego rodzaju zmiennych jest znak procenta (%). Kluczem dla tych wektorów są zmienne znakowe (numeryczne ulegają konwersji do znakowych). Np.

	%quota = ("root",100000,
		  "pat",256,
		  "fiona",4000);
odwoływanie się do elementów ma następującą postać:

	$quota{dave} = 3000;	# dave - klucz, 3000 - wartość
W Perlu jest predefiniowany wektor skojarzony %ENV, zawierający zmienne środowiska. Np.

	if ($ENV{DISPLAY})
	{
		print "Zmienna DISPLAY jest ustawiona\n";
	}
Zdefiniowane są funkcje do obsługi tego rodzaju wektorów, są to: each, keys, values i delete. Należy przy tym zwrócić uwagę na wyłączanie się nazw. W Perlu zmienne, wektory, wektory skojarzone, funkcje i pakiety mogą mieć ta sama nazwę i nie będzie to rodzić konfliktów.