in reply to BEGIN and die(), an ugly combination

use POSIX:
use POSIX qw(_exit); BEGIN { print STDERR "my error message\n"; _exit(-1) }
Update: Actually, normal exit works fine too:
BEGIN { warn "my error message\n"; exit -1 }