The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


HTTP::ProxyPAC - parse PAC (Proxy Auto Config) files


  use HTTP::ProxyPAC;

  my $pac = HTTP::ProxyPAC->new( URI->new("") );
  my $res = $pac->find_proxy("");

  if ($res->direct) {
  } elsif ($res->proxy) {
      $ua->proxy('http' => $res->proxy);


HTTP::ProxyPAC is a plugin to parse Proxy Auto Configuration file to find appropriate proxy for any URL. You can share the same proxy setup by using the same proxy.pac file as your favorite browsers like Firefox, IE or Opera.



Creates new HTTP::ProxyPAC object. It accepts arguments such as URI object, path to the proxy.pac file, scalar reference to the JavaScript code, filehandle or IO::Handle object.

  $res = $pac->find_proxy($url);
  @res = $pac->find_proxy($url);

Wrapper method for the JavaScript FindProxyForURL function. Takes URL as string or URI object and returns HTTP::ProxyPAC::Result object.

FindProxyForURL function might return multiple candidates. In that case, find_proxy will return Result objects as arrray in an array context, and only the first result in a scalar context.

WHAT ABOUT HTTP::ProxyAutoConfig?

I know that there's already HTTP::ProxyAutoConfig module that exactly does the same thing, and actually this module reuses lots of PAC functions defined there (Thanks!).

The reason why I wrote this module is, Javascript2Perl converter function defined in HTTP::ProxyAutoConfig looks horrible, and actually the generated perl code doesn't compile for me. So I created yet another module of mine that uses SpiderMonkey based JavaScript binding, which might be overkill for this task, but should definitely be more robust.


Tatsuhiko Miyagawa <>

Ryan Eatmon wrote PAC functions in Perl for HTTP::ProxyAutoConfig, where I copied all the HTTP::ProxyPac::Functions from.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


HTTP::ProxyAutoConfig, JavaScript,

1 POD Error

The following errors were encountered while parsing the POD:

Around line 158:

You forgot a '=back' before '=head1'