From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

# [[[ HEADER ]]]
use RPerl;
use strict;
our $VERSION = 0.001_000;
# [[[ OO INHERITANCE ]]]
# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages
# [[[ OO PROPERTIES ]]]
our hashref $properties = { bar => my integer $TYPED_bar = 23 };
# [[[ SUBROUTINES & OO METHODS ]]]
sub double_bar_save {
{ my void::method $RETURN_TYPE };
( my MyClass03MediumRPerl $self ) = @ARG; # single argument in, multiple argument English syntax
$self->{bar} = $self->{bar} * 2;
}
sub double_bar_return {
{ my integer::method $RETURN_TYPE };
my MyClass03MediumRPerl $self = shift @ARG; # single argument in, single argument English syntax
return $self->{bar} * 2;
}
1; # end of class
# [[[ HEADER ]]]
use RPerl;
use strict;
our $VERSION = 0.001_000;
# [[[ OO INHERITANCE ]]]
# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages
# [[[ OO PROPERTIES ]]]
our hashref $properties = { bax => my integer $TYPED_bax = 123 }; # NEED FIX: bax should be readonly, need to change into a constant???
# [[[ SUBROUTINES & OO METHODS ]]]
sub triple_bax_save {
{ my void::method $RETURN_TYPE };
my MySubclass03MediumRPerl $self = shift @_; # single argument in, single argument punctuation syntax
$self->{bax} = $self->{bax} * 3;
}
sub triple_bax_return {
{ my integer::method $RETURN_TYPE };
my MySubclass03MediumRPerl $self = shift; # single argument in, single argument hidden syntax
return $self->{bax} * 3;
}
sub add_bax_return {
{ my integer::method $RETURN_TYPE };
( my MySubclass03MediumRPerl $self, my integer $addend ) = @ARG; # multiple arguments in, multiple argument English syntax
if ( $addend < 10 ) {
return $self->{bax} + $addend;
}
return $self->{bax} + 3;
}
sub subtract_bax_return {
{ my integer::method $RETURN_TYPE };
( my MySubclass03MediumRPerl $self, my integer $subtrahend ) = @_; # multiple arguments in, multiple argument punctuation syntax
if ( $subtrahend < 10 ) {
return $self->{bax} - $subtrahend;
}
return $self->{bax} - 3;
}
sub multiply_bax_return {
{ my integer::method $RETURN_TYPE };
my MySubclass03MediumRPerl $self = shift @ARG; # multiple arguments in, single argument English syntax
my integer $multiplier = shift @_; # multiple arguments in, single argument punctuation syntax
if ( $multiplier < 10 ) {
return $self->{bax} * $multiplier;
}
return $self->{bax} * 3;
}
sub multiply_multiply_bax_return {
{ my integer::method $RETURN_TYPE };
my MySubclass03MediumRPerl $self = shift @ARG; # multiple arguments in, single argument English syntax
my integer $multiplier = shift @_; # multiple arguments in, single argument punctuation syntax
my integer $multiplier2 = shift; # multiple arguments in, single argument hidden syntax
if ( $multiplier < 10 ) {
return $self->{bax} * $multiplier * $multiplier2;
}
return $self->{bax} * 3 * $multiplier2;
}
1; # end of subclass