
package Potatoe ;
use AutoLoader ;
@ISA = ("Vegetable");

sub AUTOLOAD{} ;

package SuperObject ;
@ISA = ("Potatoe");

package SuperObjectWithAutoload ;
@ISA = ("Potatoe");
sub AUTOLOAD{} ;

package TiedHash;
use Tie::Hash;

@ISA = (Tie::StdHash);

package TiedArray;
use Tie::Array;

@ISA = ('Tie::StdArray');

package TiedScalar;
use Tie::Scalar;

@ISA = (Tie::StdScalar);


package main ;

$s = {
  'STDIN' => \*STDIN,
  'REGEX' => qr/^this|that/,
  'RS' => \4,
  
  'A' => {
    'a' => {},
    'code1' => sub { "DUMMY" },
    'b' => {
      'a' => 0,
      'b' => 1,
      'c' => {
        'a' => 1,
        'b' => 1,
        'c' => 1,
        }
      },
    'b2' => {
      'a' => 1,
      'b' => 1,
      'c' => 1,
      }
  },
  'C' => {
    'b' => {
      'a' => {
        'c' => 42,
        'a' => {},
        'b' => sub { "DUMMY" },
	'empty' => undef,
	'z_array' => [1]
      }
    }
  },
  'ARRAY' => [
    'elment_1',
    'element_2',
    'element_3',
    [1, 2],
    {a => 1, b => 2}
  ],
  'STRING_WITH_EMBEDED_NEW_LINE' => "line1\nline2\r\nline3\nlong line4 lkjdfljkdjfklsdfkldjflkjdkfjksldfjldjfklsdjfkljdklfjksljfkldsjfkldsjklfjlfjlsdjflsjfklsjdfldjkslfjklsdfj\nline5",
};

my $scalar = "hi" ;
$s->{SCALAR} = $scalar ;
$s->{SCALAR_REF} = \$scalar ;
$s->{SCALAR_REF2} = \$scalar ;
${$s->{'A'}{'code3'}} = $s->{'A'}{'code1'};
$s->{'A'}{'code2'} = $s->{'A'}{'code1'};
$s->{'CopyOfARRAY'} = $s->{'ARRAY'};
$s->{'C1'} = \($s->{'C2'});
$s->{'C2'} = \($s->{'C1'});

$s->{za} = '';

$object = bless {A =>[], B => 123}, 'SuperObject' ;
$s->{object} = $object ;

$object_with_autoload = bless {}, 'SuperObjectWithAutoload' ;
$s->{object_with_autoload} = $object_with_autoload ;

tie my %tied_hash, "TiedHash" ;
$tied_hash{'x'}++ ;
$s->{tied_hash} = \%tied_hash ;

tie my @tied_array, "TiedArray" ;
$tied_array[0]++ ;
$s->{tied_array} = \@tied_array ;

tie my $tied_scalar, "TiedScalar" ;
$tied_scalar++ ;
$s->{tied_scalar} = $tied_scalar ;

my %tied_hash_object ;
tie my %tied_hash_object, "TiedHash" ;
%tied_hash_object = (m1 => 1) ;
bless \%tied_hash_object, 'SuperObject' ;
$s->{tied_hash_object} = \%tied_hash_object ;

tie my @tied_array_object, "TiedArray" ;
@tied_array_object = (0) ;
bless \@tied_array_object, 'SuperObject' ;
$s->{tied_array_object} = \@tied_array_object;

