"Use of uninitialized value" Because of eval context, you may see warnings with useless filename/line, example: Use of uninitialized value at (eval 80) line 12. Use of uninitialized value at (eval 80) line 43. Use of uninitialized value at (eval 80) line 44. To track down where this eval is really happening, try using a __WARN__ handler to give you a stack trace: use Carp (); local $SIG{__WARN__} = \&Carp::cluck; #### use WebApp; my $webapp = WebApp->new(); $webapp->run();