12. Podprogramy i pakiety

Perl oferuje możliwość programowania modułowego i bibliotek.

12.1. Podprogramy

Perl może zawierać funkcje, posiadające parametry i zwracające wartości. Poniżej przedstawiono szkielet :

	sub sub1
	{
		local($param1,$param2) = @_;
		# zrob costam
		$value;
	}
Zaś wywołanie może mięć postać:

	$return_val = do sub1("to jest","test");
Słowo kluczowe do można zastąpić znakiem &. I jest to metoda polecana:

	$return_val = &sub1("to jest","test");
Trzeba mięć na uwadze kilka rzeczy pisząc funkcje. Parametry umieszczane są jako wektor @_. Ponieważ wszystkie zmienne domyślnie są globalne, użyto tu funkcji local() w celu skopiowania wartości pod zmienne lokalne. Perl posiada konstrukcje return, która może być użyta eksplicite do zwrócenia wartości. Jest to zwykle niepotrzebne, gdyż zwracana wartością jest wynik wykonania ostatniej linii procedury. Zatem jeśli chcemy, żeby funkcja zwracała 0, jako ostatnia linie piszemy po prostu 0;

12.2. Pakiety

Perl ma bibliotekę funkcji, które mogą być używane w skryptach. Odpowiednikiem #include z C jest tu require. Na przykład dołączenie funkcji getopt:

	require 'getopts.pl';
	&Getopts('vhi:');
	if ($opt_v) { print "Wlaczony jest tryb sledzenia\n"; }
Zamiast require można użyć use. Wywołania funkcji nie muszą być wtedy poprzedzone nazwą pakietu:

       use Cwd;
       $here = getcwd();

zamiast

       require Cwd;
       $here = Cwd::getcwd();
Można oczywiście tworzyć własne biblioteki. Bogaty zestaw pakietów można znaleźć w CPANie

12.2.1 Pakiety związane z WWW

Do standardowej dystrybucji Perla dołączony jest pakiet CGI, dzięki któremu można obsługiwać formularze. Ponadto w CPANie można znaleźć pakiety HTML do obróbki stron HTML, URI oraz całą bibliotekę LWP (lib-wwwpl).