HTTP::Request replacing underscores with hyphens in headers
Try naming the header with a leading :
, as per the documentation in HTTP::Headers under "NON-CANONICALIZED FIELD NAMES":
The header field name spelling is normally canonicalized including the '_' to '-' translation. There are some application where this is not appropriate. Prefixing field names with ':' allow you to force a specific spelling.