OOP muss man fast immer verwenden, wenn man Module, die nur ein OOP-Interface zur verfuegung stellen, benuetzt.
OOP sollte man verwenden, wenn man Daten und die darauf angewendete Funktionalitaet in Gruppen (=Klassen) zusammenfassen will, z.b. wenn man ein Zeichenprogramm hat, das Klassen wie Punkt, Rechteck, Kreis usw. hat, kann man dann einfach sagen:
$punkt->zeichneDich();
$kreis->zeichneDich();
und du hast fuer jedes Objekt ($punkt, $kreis, ...) unterschiedliche Methoden (zeichneDich), die jedoch alle gleich heissen. Welche davon aufgerufen wird, weiss Perl schon durch das Objekt.
Bei prozeduraler Programmierung muesstest du sonst schreiben:
&zeichneDichAlsPunkt($punkt);
&zeichneDichAlsKreis($kreis);
oder in zeichneDich() immer abfragen, was da reinkommt, was der Prozedur zeichneDich() unnoetig viel Code beschert, und eine eventuelle Erweiterung erschwert, weil du da immer auf alle Elemente Ruecksicht nehmen musst, waehrend du bei OOP immer in derselben Klasse bleibst.
Weiters hast du bei OOP auch das Konzept der Vererbung. Du koenntest z.B. eine Klasse namens Punkt machen, die eine bestimmte Funktionalitaet hat. Davon leitest du eine Klasse namens Strich ab, die einige Funktionalitaet von Punkt erbt, andere aber ueberschreibt oder erweitert. Von Strich koenntest du z.B. Rechteck, Kreis, Oval, ... ableiten...