Ok, Here goes a more complex example, wich shows it in more details:
use strict;
use warnings;
package Foo::Bar;
sub new {
tie my @arr, 'Foo::Bar';
return bless \@arr, 'Foo::Bar';
}
sub TIEARRAY {
my $scalar = "A Scalar";
return bless \$scalar, 'Foo::Bar';
}
sub FETCH {
my ($self, $index) = @_;
print 'FETCH ';
if ($index == 0) {
return $self->lalala0;
} elsif ($index == 1) {
return $self->lalala1;
} else {
return undef;
}
}
sub STORE {
my ($self, $index, $value) = @_;
print 'STORE ';
if ($index == 0) {
return $self->lalala0($value);
} elsif ($index == 1) {
return $self->lalala1($value);
} else {
return undef;
}
}
sub lalala {
my $self = shift;
if (UNIVERSAL::isa($self,'ARRAY')) { $self = tied(@{$self}) };
print "Lalala $self\n";
}
sub lalala0 {
my $self = shift;
if (UNIVERSAL::isa($self,'ARRAY')) { $self = tied(@{$self}) };
print "Lalala0 $self\n";
}
sub lalala1 {
my $self = shift;
if (UNIVERSAL::isa($self,'ARRAY')) { $self = tied(@{$self}) };
print "Lalala1 $self\n";
}
sub DESTROY {
my $self = shift;
if (UNIVERSAL::isa($self,'ARRAY')) {
print "Destroying the array...\n";
} else {
print "Destroying the scalar...\n";
}
}
package main;
my $a = Foo::Bar->new();
# The object inside is a SCALAR
$a->lalala();
$a->[0] = $a->[1];
$a->[1] = $a->[0];
UPDATE: Included the DESTROY method, to illustrate...
-
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.
|