use strict;
use warnings;
use feature 'say';
package OO;
sub new {my $animal = $_[1]; return bless \$animal;}
sub species { return ${$_[0]} }
package main;
my $cat = 'cat';
my $dog = 'dog';
my $self = new OO( $cat );
{
my $self = $self;
$self = new OO( $dog ) if $ARGV[0] eq 'Fido';
say $self->species();
}
say $self->species();
####
dog
cat
##
##
cat
cat