Well of course, correcting to $self->{data} removes the error as well as correcting to $$self{data}. With this error fixed, apache starts correctly - the issue is that it doesn't report the syntax error very nicely.
From some further experimentation, the Apache segfault really only seems to happen when there's an undeclared hash. Other kinds of syntax errors I could come up with are reported correctly.