in reply to Excel: undef as hash ref

$Excel->{DisplayAlerts} = 'False';

... does not do what you think it does. Most likely you want:

$Excel->{DisplayAlerts} = 0;

Also, if Excel doesn't tell you the reason, it's hard to find out the reason yourself. You can try to be more defensive:

my $Book = $Excel->Workbooks->Open("$in_file_dgb/haha.xls") or die "Couldn't open '$in_file_dgb/haha.xls' via Excel.";

Also consider using Spreadsheet::ParseExcel to see whether the Excel file actually is readable.