package Cat;
sub new{
   my $class=shift;
   my $dptr={};
   bless($dptr, $class);
}
sub set_attributes{
   my $self= shift;
   $self->{"Name"}="Sylvester";
   $self->{"Owner"}="Mrs. Black";
   $self->{"Type"}="Siamese";
   $self->{"Sex"}="Male";
}
sub get_attributes{
   my $self = shift;
   while(($key,$value)=each( %$self)){
      print "$key is $value. \n";
   }
1;


# Dog.pm
package Dog;
sub new{             
    my $class=shift;
    my $dptr={};
    bless($dptr, $class);
}
sub set_attributes{
    my $self= shift;
    my($name, $owner, $breed)=@_;
    $self->{"Name"}="$name";
    $self->{"Owner"}="$owner";
    $self->{"Breed"}="$breed";
}
sub get_attributes{
    my $self = shift;
    print "All about $self->{Name}\n";
    while(($key,$value)= each( %$self)){
       print "$key is $value.\n";
    }
}
1;



#main.pl
#!/bin/perl
use Cat;
use Dog;

my $dogref = Dog->new;     
my $catref= Cat->new;

$dogref->set_attributes("Tom", "Jack", "Mutt");
$catref->set_attributes;   

$dogref->get_attributes;
$catref->get_attributes;