$string = "Here's a string.";

@array = (1, 2, 3);

%hash = ('fruit' => 'apples', 'vegetable' => 'corn');

sub printem
{
    print shift;
}

$complex = {
    string         =>   $string,
    number         =>   3.1415926,
    array          =>   [@array],
    hash           =>   {%hash},
    arrayreference =>   \@array,
    hashreference  =>   \%hash,
    sub            =>   \&printem,
    anonymoussub   =>   sub {print shift;},
    handle         =>   \*STDOUT,
};

print $complex->{string}, "\n";

print $complex->{number}, "\n";

print $complex->{array}[0], "\n";

print $complex->{hash}{fruit}, "\n";

print ${$complex->{arrayreference}}[0], "\n";

print ${$complex->{hashreference}}{"fruit"}, "\n";

$complex->{sub}->("Subroutine call.\n");

$complex->{anonymoussub}->("Anonymous subroutine call.\n");

print {$complex->{handle}} "Text printed to a handle.", "\n";
