#database connection variables defined here with 'our' scope sub function1 { eval { my $db = DBI->connect("DBI:mysql:database=$sql_database;host=$sql_host;port=$sql_port", $username, $password,{'RaiseError' => 1}); }; return "some value", "Error: $@" if $@; } #### sub function1 { my $db=&connect(pass in connection parameters...) if typeof $db = string return "some value", "Error: $db"; } sub connect{ eval { my $db = DBI->connect("DBI:mysql:database=$sql_database;host=$sql_host;port=$sql_port", $username, $password,{'RaiseError' => 1}); }; if $@ return $@; else return $db }