View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Jonathan Yu > WebService-UWO-Directory-Student-1.004 > WebService::UWO::Directory::Student



Annotate this POD

View/Report Bugs
Module Version: 1.004   Source  


WebService::UWO::Directory::Student - Perl module for searching the UWO student directory


Version 1.004 ($Id: 10608 2009-12-23 16:06:17Z $)


This module provides a Perl interface to the public directory search system which lists current students at the University of Western Ontario. For more information, see the web interface at


Example code:

    use WebService::UWO::Directory::Student;

    # Create Perl interface to API
    my $dir = WebService::UWO::Directory::Student->new;

    # Look up a student by name
    my $results = $dir->lookup({
      first => 'John',
      last  => 'S'

    # Go through results
    foreach my $stu (@{$results}) {
      print 'email: ' . $stu->email . "\n";

    # Reverse a lookup (use e-mail to find record)
    my $reverse = $dir->lookup({
      email => ''

    if (defined $reverse) {
      print "Found: $reverse\n";


This module was tested under Perl 5.10.0, using Debian Linux. However, because it's Pure Perl and doesn't do anything too obscure, it should be compatible with any version of Perl that supports its prerequisite modules.

If you encounter any problems on a different version or architecture, please contact the maintainer.



  WebService::UWO::Directory::Student->new( \%params )

Creates a UWO::Directory::Student search object, which uses a given web page and server. Being that this module is developed to target UWO's in-house system, the defaults should suffice.

The parameters available are:

    my $dir = UWO::Directory::Student->new({
      url    => '',
      server => 'localhost',

Which instantiates a UWO::Directory::Student instance using url as the frontend and server as the "black-box" backend.


  $dir->lookup( \%params )

Uses a WebService::UWO::Directory::Student search object to locate a given person based on either their name (first and/or last) or their e-mail address (email).

The module uses the following procedure to locate users:

  1. If an e-mail address is provided:
    1. The address is deconstructed into a first initial and the portion of the last name. (According to the regular expression ^(\w)([^\d]+)([\d]*)$)
    2. The partial name is looked up in the directory.
    3. The resulting records are tested against the e-mail address. If the e-mail address matches a given record, an anonymous hash containing user information is returned. The lookup returns a false value (0) upon failure.
  2. If first and/or last names are provided:
    1. The name is searched using the normal interface (using the query last_name,first_name) and the results are returned as an array reference. If there are no results, the method returns a false value (0).

Example code:

    # Look up "John S" in the student directory
    my $results = $dir->lookup({
      first => 'John',
      last  => 'S'

    # Look up
    my $reverse = $dir->lookup({
      email => ''

This method is not guaranteed to return results. Keep in mind that if no results are found, the return code will be 0, so make sure to check return codes before attempting to dereference the expected array/hash.

Record Format

Each returned record will be a hash with the following fields:

You may explore this using Data::Dumper.


WebService::UWO::Directory::Student provides access to some internal methods used to retrieve and process raw data from the directory server. Its behaviour is subject to change and may be finalized later as the need arises.


  $dir->_query( $query, $ua )

This method performs an HTTP lookup using LWP::UserAgent and returns a SCALAR reference to the returned page content. A LWP::UserAgent object may optionally be passed, which is particularly useful if a proxy is required to access the Internet.

Please note that if a LWP::UserAgent is passed, the User-Agent string will not be modified. In normal operation, this module reports its user agent as 'WebService::UWO::Directory::Student/' . $VERSION.


  WebService::UWO::Directory::Student::_parse( $response )

This method processes the HTML content retrieved by _query method and returns an ARRAY reference containing HASH references to the result set. This is most likely only useful for testing purposes.


Jonathan Yu <>


You can find documentation for this module with the perldoc command.

    perldoc WebService::UWO::Directory::Student

You can also look for information at:


You can access the most recent development version of this module at:

If you are a CPAN developer and would like to make modifications to the code base, please contact Adam Kennedy <>, the repository administrator. I only ask that you contact me first to discuss the changes you wish to make to the distribution.


Please send relevant comments, rotten tomatoes and suggestions directly to the maintainer noted above.

If you have a bug report or feature request, please file them on the CPAN Request Tracker at If you are able to submit your bug report in the form of failing unit tests, you are strongly encouraged to do so.

SEE ALSO ^, the site this module uses to query the database



There are no known bugs as of this release.



In a perfect world, I could just say that this package and all of the code it contains is Public Domain. It's a bit more complicated than that; you'll have to read the included LICENSE file to get the full details.


The software is provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

syntax highlighting: