If your object is maintaining a reference to the supplierList, you can just splice it if you want to. The reference remains an intact reference to the same array. But actually, in your code, I don't see why you need to rebuild anything, since you've only modified a hash that is referred to by an array that is referred to by self. You haven't changed the object structure in any way.
As an aside, you've chosen a rather roundabout way to make accessors with that string eval. Why not just use a closure:
sub _create_accessors
{
my %orderObjectFields = @_;
foreach my $field ( keys %orderObjectFields )
{
my $default = $orderObjectFields{$field};
no strict 'refs';
*{ __PACKAGE__ . "::$field" } = sub
{
my $value =
( scalar @_ > 1 ? $_[0]->{$field} = $_[1] : $_[0]->{$fie
+ld} );
$value = $default unless defined $value;
$value;
};
}
}