---
name: "WebService::CIA::Source::Web"
section: "3pm"
platform: "linux"
package: "libwebservice-cia-perl"
version: "1.4-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/WebService::CIA::Source::Web"
---

# WebService::CIA::Source::Web(3pm)

An interface to the online CIA World Factbook

## NAME

WebService::CIA::Source::Web - An interface to the online CIA World Factbook

## SYNOPSIS

```
  use WebService::CIA::Source::Web;
  my $source = WebService::CIA::Source::DBM->new();
```

## DESCRIPTION

WebService::CIA::Source::Web is an interface to the live, online version of the CIA World Factbook.

It's a very slow way of doing things, but requires no pre-compiled DBM. It's more likely to be useful for proving concepts or testing.

## METHODS

Apart from `"new"`, these methods are normally accessed via a WebService::CIA object.

- "new( \\%opts )"

  ```
      my $source = WebService::CIA::Source::Web->new();
      $source = WebService::CIA::Source::Web->new( { user_agent => $ua } );
  ```

  This method creates a new WebService::CIA::Source::Web object. It takes an optional hashref of arguments.

  - "user\_agent"

    A user agent object to use. This must implement the same user interface as `"LWP::UserAgent"` (or, at least, a `"get()"` method).

- "value($country\_code, $field)"

  Retrieve a value from the web.

  `$country_code` should be the FIPS 10-4 country code as defined in \<https://www.cia.gov/library/publications/the-world-factbook/appendix/appendix-d.html\>.

  `$field` should be the name of the field whose value you want to retrieve, as defined in \<https://www.cia.gov/library/publications/the-world-factbook/docs/notesanddefs.html\>. (WebService::CIA::Parser also creates four extra fields: "URL", "URL - Print", "URL - Flag", and "URL - Map" which are the URLs of the country's Factbook page, the printable version of that page, a GIF map of the country, and a GIF flag of the country respectively.)

  `"value"` will return `"undef"` if the country or field cannot be found, or if there is an error GETing the page. This isn't ideal, but I can't think of the best way around it right now.

- "all($country\_code)"

  Returns a hashref of field-value pairs for `$country_code` or an empty hashref if `$country_code` isn't available from the Factbook.

- "get($country\_code)"

  Retrieve and cache the data for a country.

  Returns 1 if successful, 0 if not.

- "cached($country\_code)"

  Get/set the country code whose data is cached.

- "cache($hashref)"

  Get/set a hashref of data for the current country.

- "parser()"

  Returns a reference to the WebService::CIA::Parser object being used.

- "ua( $userAgent )"

  Returns a reference to the user agent object being used. By default this is an `"LWP::UserAgent"` object, but you can pass a different object in if you wish.

- "last\_response()"

  Returns the `"HTTP::Response"` object from the last request.

## CACHING

In order to make some small improvement in efficiency, WebService::CIA::Source::Web keeps a copy of the data for the last country downloaded in memory.

## TO DO

- File system based caching of pages.

  - User-definable stack of cached countries, rather than just one.

  - Caching of last-modified headers; conditional GET.

  ## AUTHOR

Ian Malpass (ian-cpan@indecorous.com)

## COPYRIGHT

Copyright 2003-2007, Ian Malpass

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

The CIA World Factbook's copyright information page (\<https://www.cia.gov/library/publications/the-world-factbook/docs/contributor\_copyright.html\>) states:

```
  The Factbook is in the public domain. Accordingly, it may be copied
  freely without permission of the Central Intelligence Agency (CIA).
```

## SEE ALSO

WebService::CIA, WebService::CIA::Parser, WebService::CIA::Source::DBM
