Skip to content

Instantly share code, notes, and snippets.

@dim0xff
Created December 28, 2015 13:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dim0xff/b40880664e62a71442b7 to your computer and use it in GitHub Desktop.
Save dim0xff/b40880664e62a71442b7 to your computer and use it in GitHub Desktop.
Add ability to user provide default values to moose attributes via import
#!/usr/bin/env perl
use v5.14;
use strict;
use warnings;
package T {
use Moose;
use vars qw(%defaults);
sub import {
my ( $class, %opts ) = @_;
$defaults{a} = $opts{default_a} if exists $opts{default_a};
$defaults{b} = $opts{default_b} if exists $opts{default_b};
}
has a => (
is => 'rw',
isa => 'Int',
( exists $defaults{a} ? ( default => $defaults{a} ) : () ),
);
has b => (
is => 'rw',
isa => 'Str',
( exists $defaults{b} ? ( default => $defaults{b} ) : () ),
);
}
package main {
use T default_a => 123, default_b => 'abc';
my $t = T->new( b => 'def' );
say $t->a;
say $t->b;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment