I came across the same problem while building Archive::Tar on Win2K, Visual Studio 6.
I fixed the same line in _get_handle, but as:
$fh = Compress::Zlib::gzopen ($fh, $mode)
or &_drat;
(since gzopen will actually call gzdopen for file handles)
This brought me to the same place as you, failing on test 6.
At this point, the dummy.tar file is produced--though it should really be named dummy.tar.gz. I was successfully able to unzip and view it in WinZip.
BUT, after looking at the code for Tar.pm... it appears the error is that some subs allow you to specify a $compress flag, while others don't. The result (as I believe) is that get_content doesn't tell _get_handle that the file is compressed. So, _get_handle returns undef, which breaks the code.
I looked on CPAN, and noticed that this module is only in its alpha stages though--so I guess you can just wait and hope that the beta is better. :-)
print(map(lc(chr),split(6,qw/99672682673683684689632658645641610607/)));