HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: //usr/local/share/perl5/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;