MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/local/lib/perl5/5.8.8/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;