1*5486feefSafresh1# -*- mode: perl; -*- 2*5486feefSafresh1 3*5486feefSafresh1# test subclassing Math::BigRat 4*5486feefSafresh1 5*5486feefSafresh1package Math::BigRat::Subclass; 6*5486feefSafresh1 7*5486feefSafresh1use strict; 8*5486feefSafresh1use warnings; 9*5486feefSafresh1 10*5486feefSafresh1use Math::BigRat; 11*5486feefSafresh1 12*5486feefSafresh1our @ISA = qw(Math::BigRat); 13*5486feefSafresh1 14*5486feefSafresh1our $VERSION = '0.04'; 15*5486feefSafresh1 16*5486feefSafresh1use overload; # inherit overload 17*5486feefSafresh1 18*5486feefSafresh1# Global variables. The values can be specified explicitly or obtained from the 19*5486feefSafresh1# superclass. 20*5486feefSafresh1 21*5486feefSafresh1our $accuracy = undef; # or Math::BigInt::Subclass -> accuracy(); 22*5486feefSafresh1our $precision = undef; # or Math::BigInt::Subclass -> precision(); 23*5486feefSafresh1our $round_mode = "even"; # or Math::BigInt::Subclass -> round_mode(); 24*5486feefSafresh1our $div_scale = 40; # or Math::BigInt::Subclass -> div_scale(); 25*5486feefSafresh1 26*5486feefSafresh1BEGIN { 27*5486feefSafresh1 *objectify = \&Math::BigInt::objectify; 28*5486feefSafresh1} 29*5486feefSafresh1 30*5486feefSafresh1# We override new() 31*5486feefSafresh1 32*5486feefSafresh1sub new { 33*5486feefSafresh1 my $proto = shift; 34*5486feefSafresh1 my $class = ref($proto) || $proto; 35*5486feefSafresh1 36*5486feefSafresh1 my $self = $class -> SUPER::new(@_); 37*5486feefSafresh1 $self->{'_custom'} = 1; # attribute specific to this subclass 38*5486feefSafresh1 bless $self, $class; 39*5486feefSafresh1} 40*5486feefSafresh1 41*5486feefSafresh1# Any other methods to override can go here: 42*5486feefSafresh1 43*5486feefSafresh1# sub method { 44*5486feefSafresh1# ... 45*5486feefSafresh1# } 46*5486feefSafresh1 47*5486feefSafresh11; 48