NAME
Nefarious - wicked or criminal objects.
VERSION
Version 0.04
SYNOPSIS
Quick summary of what the module does.
Perhaps a little code snippet.
our $make_accessor;
BEGIN {
$make_accessor = sub {
my ($key) = shift;
return sub {
$_[0]->{$key} = $_[1] if $_[1];
$_[0]->{$key};
};
};
}
use Nefarious {
Properties => {
size => $make_accessor->('size'),
colour => $make_accessor->('colour'),
material => $make_accessor->('material'),
},
Product => {
new => sub {
my $self = bless {}, shift;
$self->set(@_);
$self;
},
name => $make_accessor->('name'),
description => $make_accessor->('description'),
properties => sub {
my ($self, $props) = @_;
$self->{properties} //= Properties->new();
if ($props) {
$self->{properties}->$_($props->{$_}) for (keys %{$props});
}
$self->{properties};
},
set => [
[Str, Str, HashRef, sub {
$_[0]->name($_[1]);
$_[0]->description($_[2]);
$_[0]->properties($_[3]);
}],
[Str, Str, sub {
$_[0]->name($_[1]);
$_[0]->description($_[2]);
}],
[Str, sub {
$_[0]->name($_[1]);
}],
sub {
$_[0]->name('Set the name of the Product');
$_[0]->description('Set the description of the Product');
}
],
Hat => {
onesize => $make_accessor->('onesize'),
Bowler => {
onesize => 0,
}
}
}
};
my $product = Bowler->new('Nefarious Brand', 'A bowler hat made from 100% wool', {
size => '60cm',
colour => 'black',
material => 'wool'
});
$product->name; # Nefarious Brand
$product->description; # A bowler hat made from 100% wool
$product->properties->colour; # black
$product->onesize; # 0;
AUTHOR
LNATION, <email at lnation.org>
BUGS
Please report any bugs or feature requests to bug-nefarious at rt.cpan.org
, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=Nefarious. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Nefarious
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
This software is Copyright (c) 2023->2025 by LNATION.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)