$DBI::errstr ist doch die Variable.
wenn du das unbedingt in eine andere schreiben willst musst du halt ne neue belegen:
my $dbh = DBI->connect(DB, "web", "123");
my $variable = $DBI::errstr if $DBI::errstr;
oder sowas:
eval { $dbh = DBI->connect(DB, "web", "123") }
my $variable = $@ if $@;
sorry, wenn ich dich noch nicht richtig verstanden habe