sub do_stat {
my ( $dice, $mod ) = @_;
my $roll = RPG::Dice::roll ( $dice );
return &$mod( $roll );
}
####
# anonymous function call
my $roll = do_stat( "3d6", sub { int($_[0]/2)-5; } );
# Named function call
sub modify { int($_[0]/2)-5; }
my $roll2 = do_stat( "3d6, \&modify );
##
##
my @data = ( { name => 'STR',
dice => '3d6',
modifier => sub { $_[0] + 2 }
},
{ name => 'INT',
dice => '3d6',
modifier => sub { $_[0] - 5 }
}
);
foreach ( @data ) {
$_->{ roll } =
&{ $_->{ modifier } }( RPG::Dice::roll( $_->{ dice } ) );
}