The HTTP::Soup bindings are statically generated, and fairly out of date.
You should use Glib::Object::Introspection instead, and generate them dynamically from the introspection data. For instance, Glib::IO and Gtk3 use introspection and pure Perl to paper over the less Perl-y bits of the C API.
Using introspection has the added benefit that you can extract the documentation from the introspection data; Glib::Object::Introspection installs a small documentation viewer for that.
The HTTP::Soup bindings are statically generated, and fairly out of date.
The HTTP::Soup bindings are generated with Glib::Object::Introspection [1]. At the time the gir definition files were far from being complete so the bindings had to resort to XS in order to provide the missing pieces.
I haven’t checked if the gir files are now providing the missing functions and methods.