=over 4
-=item
+=item *
The system being designed is large, or is likely to become large.
-=item
+=item *
The data can be aggregated into obvious structures, especially if
there's a large amount of data in each aggregate.
-=item
+=item *
The various types of data aggregate form a natural hierarchy that
facilitates the use of inheritance and polymorphism.
-=item
+=item *
You have a piece of data on which many different operations are
applied.
-=item
+=item *
You need to perform the same general operations on related types of
data, but with slight variations depending on the specific type of data
the operations are applied to.
-=item
+=item *
It's likely you'll have to add new data types later.
-=item
+=item *
The typical interactions between pieces of data are best represented by
operators.
-=item
+=item *
The implementation of individual components of the system is likely to
change over time.
-=item
+=item *
The system design is already object-oriented.
-=item
+=item *
Large numbers of other programmers will be using your code modules.
The fully qualified method name that was called is available in the
C<$AUTOLOAD> package global for your class. Since this is a global, if
-you want to refer to do it without a package name prefix under L<strict
-'vars'>xs, you need to declare it.
+you want to refer to do it without a package name prefix under C<strict
+'vars'>, you need to declare it.
# XXX - this is a terrible way to implement accessors, but it makes
# for a simple example.
destruction" the warning.
During global destruction, Perl will always garbage collect objects
-before unblessed references. See L</PERL_DESTRUCT_LEVEL> for more
-information about global destruction.
+before unblessed references. See L<perlhacktips/PERL_DESTRUCT_LEVEL>
+for more information about global destruction.
=head2 Non-Hashref Objects
=over 4
-=item
+=item *
The system being designed is large, or is likely to become large.
-=item
+=item *
The data can be aggregated into obvious structures, especially if
there's a large amount of data in each aggregate.
-=item
+=item *
The various types of data aggregate form a natural hierarchy that
facilitates the use of inheritance and polymorphism.
-=item
+=item *
You have a piece of data on which many different operations are
applied.
-=item
+=item *
You need to perform the same general operations on related types of
data, but with slight variations depending on the specific type of data
the operations are applied to.
-=item
+=item *
It's likely you'll have to add new data types later.
-=item
+=item *
The typical interactions between pieces of data are best represented by
operators.
-=item
+=item *
The implementation of individual components of the system is likely to
change over time.
-=item
+=item *
The system design is already object-oriented.
-=item
+=item *
Large numbers of other programmers will be using your code modules.