Las características de la Programación orientada a objetos en Perl pueden resumirse en:
overload
permite la sobrecarga de operadores.
Sigue un ejemplo que gestiona una biblioteca:
package Biblio::Doc;
use strict;
{
  my $_count = 0;
  sub get_count { $_count }
  sub _incr_count { $_count++ }
}
sub new {
  my $class = shift;
  my ($identifier, $author, $publisher, $title,  $year, $url) = @_;
  $class->_incr_count();
  my $paper = {
    _identifier      => $identifier,
    _author    => $author,
    _publisher => $publisher,
    _title     => $title,
    _year      => $year,
    _url       => $url
  };
  bless  $paper, $class;
}
sub get_identifier { $_[0]->{_identifier} }
sub get_author { $_[0]->{_author} }
sub get_publisher { $_[0]->{_publisher} }
sub get_title { $_[0]->{_title} }
sub get_year { $_[0]->{_year} }
sub get_url { $_[0]->{_url} }
sub set_url {
  my ($self, $url) = @_;
  $self ->{_url} = $url if $url;
  return ($self ->{_url});
}
1;
La clase Biblio::Doc se implanta a través del package 
Biblio::Doc
package Biblio::Doc; use strict; ...
 
