#!/usr/bin/perl $debug=1; sub test_func { my $server = shift; print "[$server]\n" if $debug=1; my %status = ( "broken" => { "webserver" => { time => 500, msg => "test" } } ); if ( defined $status{"broken"}->{$server} ) { print "exists!\n" if $debug=1; return ( "broken", $status{"broken"}->{$server} ); } } my $test = \&test_func; my ( $status, $data ) = &$test("webserver"); # should print out webserver: broken test!! print "WebServer: " . $status . " " . $data->{'msg'} . "!!\n";