In a inside-out implementation, you need to a way to identify the object that you are working with. The only difference between different objects of the same class are their addresses. by using refaddr we can uniquely identify our objects and hidden the variables in each object from each other.
A very short example
package Foo::Bar;
use Scalar::Util qw(refaddr);
my %var;
sub get_var {
my $self = shift;
return $var{ refaddr( $self ) };
}
sub set_var {
my $self = shift;
my $value = shift;
$var{ refaddr( $self ) } = $value;
return 1;
}
# Not completely sure that this is correct.
sub new {
my $class = shift;
return bless \my($anon_scalar), $class;
}
Take a look at Class::Std or Damian Conway's Best Practices on the concept.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|