Skip to content

Instantly share code, notes, and snippets.

@tobyink
Created August 11, 2020 18:06
Show Gist options
  • Select an option

  • Save tobyink/e8b45e4a59693273fa73b6950f953f4c to your computer and use it in GitHub Desktop.

Select an option

Save tobyink/e8b45e4a59693273fa73b6950f953f4c to your computer and use it in GitHub Desktop.
Mom.pm usage, example 2
use strict;
use warnings;
package Widget {
use Mom q{
name :ro :type(Str) :required
stock_level :rwp :type(Int) :default(0)
sku :ro :type(Str) :required
};
sub add_stock {
my ( $self, $count ) = ( shift, @_ );
$self->_set_stock_level( $self->stock_level + $count );
return $self->stock_level;
}
sub remove_stock {
my ( $self, $count ) = ( shift, @_ );
croak "out of stock" if $count > $self->stock_level;
$self->_set_stock_level( $self->stock_level - $count );
return $self->stock_level;
}
}
my $thingy = Widget->new(
name => 'Whatsit',
sku => 'X0000001',
);
$thingy->add_stock(50);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment