#!perl use 5.024; use strictures; use Time::HiRes qw(sleep); sub mock_connect { my $how_long_it_takes = 3 + rand; sleep $how_long_it_takes; return $how_long_it_takes; } sub main { state $db_handle = mock_connect($dsn); return sub { [200, [], ["connect took $db_handle seconds\n"]] }; } my $dsn = 'dbi:blahblah'; # from config file my $app = main($dsn);