# This file:
#   https://anggtwu.net/PERL/twopackages.pl.html
#   https://anggtwu.net/PERL/twopackages.pl
#           (find-angg "PERL/twopackages.pl")
# Author: Eduardo Ochs <eduardoochs@gmail.com>
#
# (find-google-links "How can I declare several perl packages in a single file")
# https://stackoverflow.com/questions/1748896/in-perl-how-do-i-put-multiple-packages-in-a-single-pm-file
# https://blogs.perl.org/users/carey_tilden/2010/10/multiple-packages-in-one-file.html

use strict;
use warnings;
use Scalar::Util 'blessed';

package Foo { sub speak { print "Hello from Foo!\n"; } }
package Bar { sub speak { print "Hello from Bar!\n"; } }

=begin comment
 (eepitch-perl)
 (eepitch-kill)
 (eepitch-perl)
do "./twopackages.pl" or die "ERROR";
Foo->speak();
Bar->speak();

=cut

package Pac1 {
    sub new {
        my ($class, $name) = @_;
        return bless { name => $name }, $class;
    }
    
    sub get_name {
        my ($self) = @_;
        return $self->{name};
    }
}

package PacLog2 {
    sub log {
        my ($class, $msg) = @_;
        print "[LOG]: $msg\n";
    }
}

return 1;

=begin comment
 (eepitch-perl)
 (eepitch-kill)
 (eepitch-perl)
do "./twopackages.pl" or die "ERROR";

$p = Pac1->new(3,4);
print PacLog2->($p->get_name);
print $p
print $p->{name};
print $p->get_name;
print blessed($p);


=cut

