Server : Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
System : Windows NT USER-PC 6.1 build 7601 (Windows 7 Professional Edition Service Pack 1) AMD64
User : User ( 0)
PHP Version : 7.4.6
Disable Function : NONE
Directory :  C:/xampp/perl/vendor/lib/Test/Deep/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : C:/xampp/perl/vendor/lib/Test/Deep/MM.pm
use strict;
use warnings;

package Test::Deep::MM;

sub import
{
	my $self = shift;

	my ($pkg) = caller();
	my $mpkg = $pkg."::Methods";
	foreach my $attr (@_)
	{
		if ($attr =~ /^[a-z]/)
		{
			no strict 'refs';
			*{$mpkg."::$attr"} = \&{$attr};
		}
		else
		{
			my $get_name = $mpkg."::get$attr";
			my $set_name = $mpkg."::set$attr";
			my $get_sub = sub {
				return $_[0]->{$attr};
			};
			my $set_sub = sub {
				return $_[0]->{$attr} = $_[1];
			};

			{
				no strict 'refs';
				*$get_name = $get_sub;
				*$set_name = $set_sub;
				push(@{$pkg."::ISA"}, $mpkg);
			}
		}
	}
}

sub new
{
	my $pkg = shift;

	my $self = bless {}, $pkg;

	$self->init(@_);

	return $self;
}

sub init
{
	my $self = shift;

	while (@_)
	{
		my $name = shift || confess("No name");

		my $method = "set$name";
		$self->$method(shift);
	}
}

1;