in reply to Re^4: Serving video files in specific byte-ranges
in thread Serving video files in specific byte-ranges
Looking at the source of HTTP::Message, it just does not want to decode the content delivered by a callback:
$content_ref = $self->content_ref;
die "Can't decode ref content" if ref($content_ref) ne "SCALAR";
Either you fix HTTP::Message or you try it with ->content() instead of ->decoded_content. Alternatively, look at Plack as your server framework - it should handle callback responses more gracefully than your approach.