This more or less does the trick:
package TwoFaced; use strict; my $instance_counter = 0; my $instance_array = []; sub new { my $class = shift; my @array; tie @array, $class, @_; return bless \@array, $class; } sub method { print "Method call\n"; return; } sub TIEARRAY { my ( $class, @args ) = @_; my $self = $instance_counter++; return bless \$self, $class; } sub FETCH { my ( $self, $i ) = @_; return $instance_array->[ $$self ]->[$i]; } sub STORE { my ( $self, $i, $val ) = @_; if ( not $val eq 'a' ) { $instance_array->[ $$self ]->[$i] = $val; return $self; } else { die "Illegal value: $val\n"; } } sub FETCHSIZE { my ( $self ) = @_; return scalar @{ $instance_array->[ $$self ] }; } sub DESTROY { print "Contents at death:\n"; print "\t", $_, "\n" for @{ $instance_array->[ $$_[0] ] }; } package main; my $t = new TwoFaced; print "it's an array!\n" if UNIVERSAL::isa($t, 'ARRAY'); # prints "it' +s an array!"; $t->[0] = 'b'; print ${ tied @$t }, $t->[0]; # prints "0b" print $t->method; # prints "Method call" $t->[0] = 'a'; # dies "Illegal value: a" # prints "Contents at death: ..." during object destruction
...except the destructor is called twice. I presume this is for the @array and the tied object respectively?

In reply to Re^4: tie'ing a scalar as an array? by rvosa
in thread tie'ing a scalar as an array? by rvosa

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.