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

NAME

Business::Address::POBox - Check whether an address looks like a P.O.Box

SYNOPSIS

    use Business::Address::POBox;

    if (Business::Address::POBox->new->is_pobox($address)) {
        ...
    }

DESCRIPTION

This class tries to determine whether or not an string refers to a P.O. box. This is sometimes relevant if your business process, for legal reasons, needs a real address and not a P.O. box.

It has predefined blacklists and whitelists that should catch most English and German P.O. box addresses, but you can modify these lists with the methods provided. Note that the entries are literal strings, not regular expressions.

METHODS

new
    my $obj = Business::Address::POBox->new;
    my $obj = Business::Address::POBox->new(%args);

Creates and returns a new object. The constructor will accept as arguments a list of pairs, from component name to initial value. For each pair, the named component is initialized by calling the method of the same name with the given value. If called with a single hash reference, it is dereferenced and its key/value pairs are set as described before.

init

Just calls update() in case the blacklist and/or whitelist was set during the new() call.

blacklist
    my @values    = $obj->blacklist;
    my $array_ref = $obj->blacklist;
    $obj->blacklist(@values);
    $obj->blacklist($array_ref);

Get or set the array values. If called without an arguments, it returns the array in list context, or a reference to the array in scalar context. If called with arguments, it expands array references found therein and sets the values.

blacklist_clear
    $obj->blacklist_clear;

Deletes all elements from the array.

blacklist_count
    my $count = $obj->blacklist_count;

Returns the number of elements in the array.

blacklist_index
    my $element   = $obj->blacklist_index(3);
    my @elements  = $obj->blacklist_index(@indices);
    my $array_ref = $obj->blacklist_index(@indices);

Takes a list of indices and returns the elements indicated by those indices. If only one index is given, the corresponding array element is returned. If several indices are given, the result is returned as an array in list context or as an array reference in scalar context.

blacklist_pop
    my $value = $obj->blacklist_pop;

Pops the last element off the array, returning it.

blacklist_push
    $obj->blacklist_push(@values);

Pushes elements onto the end of the array.

blacklist_set
    $obj->blacklist_set(1 => $x, 5 => $y);

Takes a list of index/value pairs and for each pair it sets the array element at the indicated index to the indicated value. Returns the number of elements that have been set.

blacklist_shift
    my $value = $obj->blacklist_shift;

Shifts the first element off the array, returning it.

blacklist_splice
    $obj->blacklist_splice(2, 1, $x, $y);
    $obj->blacklist_splice(-1);
    $obj->blacklist_splice(0, -1);

Takes three arguments: An offset, a length and a list.

Removes the elements designated by the offset and the length from the array, and replaces them with the elements of the list, if any. In list context, returns the elements removed from the array. In scalar context, returns the last element removed, or undef if no elements are removed. The array grows or shrinks as necessary. If the offset is negative then it starts that far from the end of the array. If the length is omitted, removes everything from the offset onward. If the length is negative, removes the elements from the offset onward except for -length elements at the end of the array. If both the offset and the length are omitted, removes everything. If the offset is past the end of the array, it issues a warning, and splices at the end of the array.

blacklist_unshift
    $obj->blacklist_unshift(@values);

Unshifts elements onto the beginning of the array.

clear_blacklist
    $obj->clear_blacklist;

Deletes all elements from the array.

clear_matcher
    $obj->clear_matcher;

Deletes the object.

clear_whitelist
    $obj->clear_whitelist;

Deletes all elements from the array.

count_blacklist
    my $count = $obj->count_blacklist;

Returns the number of elements in the array.

count_whitelist
    my $count = $obj->count_whitelist;

Returns the number of elements in the array.

index_blacklist
    my $element   = $obj->index_blacklist(3);
    my @elements  = $obj->index_blacklist(@indices);
    my $array_ref = $obj->index_blacklist(@indices);

Takes a list of indices and returns the elements indicated by those indices. If only one index is given, the corresponding array element is returned. If several indices are given, the result is returned as an array in list context or as an array reference in scalar context.

index_whitelist
    my $element   = $obj->index_whitelist(3);
    my @elements  = $obj->index_whitelist(@indices);
    my $array_ref = $obj->index_whitelist(@indices);

Takes a list of indices and returns the elements indicated by those indices. If only one index is given, the corresponding array element is returned. If several indices are given, the result is returned as an array in list context or as an array reference in scalar context.

matcher
    my $object = $obj->matcher;
    $obj->matcher($object);
    $obj->matcher(@args);

If called with an argument object of type String::BlackWhiteList it sets the object; further arguments are discarded. If called with arguments but the first argument is not an object of type String::BlackWhiteList, a new object of type String::BlackWhiteList is constructed and the arguments are passed to the constructor.

If called without arguments, it returns the String::BlackWhiteList object stored in this slot; if there is no such object, a new String::BlackWhiteList object is constructed - no arguments are passed to the constructor in this case - and stored in the matcher slot before returning it.

matcher_clear
    $obj->matcher_clear;

Deletes the object.

pop_blacklist
    my $value = $obj->pop_blacklist;

Pops the last element off the array, returning it.

pop_whitelist
    my $value = $obj->pop_whitelist;

Pops the last element off the array, returning it.

push_blacklist
    $obj->push_blacklist(@values);

Pushes elements onto the end of the array.

push_whitelist
    $obj->push_whitelist(@values);

Pushes elements onto the end of the array.

set_blacklist
    $obj->set_blacklist(1 => $x, 5 => $y);

Takes a list of index/value pairs and for each pair it sets the array element at the indicated index to the indicated value. Returns the number of elements that have been set.

set_whitelist
    $obj->set_whitelist(1 => $x, 5 => $y);

Takes a list of index/value pairs and for each pair it sets the array element at the indicated index to the indicated value. Returns the number of elements that have been set.

shift_blacklist
    my $value = $obj->shift_blacklist;

Shifts the first element off the array, returning it.

shift_whitelist
    my $value = $obj->shift_whitelist;

Shifts the first element off the array, returning it.

splice_blacklist
    $obj->splice_blacklist(2, 1, $x, $y);
    $obj->splice_blacklist(-1);
    $obj->splice_blacklist(0, -1);

Takes three arguments: An offset, a length and a list.

Removes the elements designated by the offset and the length from the array, and replaces them with the elements of the list, if any. In list context, returns the elements removed from the array. In scalar context, returns the last element removed, or undef if no elements are removed. The array grows or shrinks as necessary. If the offset is negative then it starts that far from the end of the array. If the length is omitted, removes everything from the offset onward. If the length is negative, removes the elements from the offset onward except for -length elements at the end of the array. If both the offset and the length are omitted, removes everything. If the offset is past the end of the array, it issues a warning, and splices at the end of the array.

splice_whitelist
    $obj->splice_whitelist(2, 1, $x, $y);
    $obj->splice_whitelist(-1);
    $obj->splice_whitelist(0, -1);

Takes three arguments: An offset, a length and a list.

Removes the elements designated by the offset and the length from the array, and replaces them with the elements of the list, if any. In list context, returns the elements removed from the array. In scalar context, returns the last element removed, or undef if no elements are removed. The array grows or shrinks as necessary. If the offset is negative then it starts that far from the end of the array. If the length is omitted, removes everything from the offset onward. If the length is negative, removes the elements from the offset onward except for -length elements at the end of the array. If both the offset and the length are omitted, removes everything. If the offset is past the end of the array, it issues a warning, and splices at the end of the array.

unshift_blacklist
    $obj->unshift_blacklist(@values);

Unshifts elements onto the beginning of the array.

unshift_whitelist
    $obj->unshift_whitelist(@values);

Unshifts elements onto the beginning of the array.

whitelist
    my @values    = $obj->whitelist;
    my $array_ref = $obj->whitelist;
    $obj->whitelist(@values);
    $obj->whitelist($array_ref);

Get or set the array values. If called without an arguments, it returns the array in list context, or a reference to the array in scalar context. If called with arguments, it expands array references found therein and sets the values.

whitelist_clear
    $obj->whitelist_clear;

Deletes all elements from the array.

whitelist_count
    my $count = $obj->whitelist_count;

Returns the number of elements in the array.

whitelist_index
    my $element   = $obj->whitelist_index(3);
    my @elements  = $obj->whitelist_index(@indices);
    my $array_ref = $obj->whitelist_index(@indices);

Takes a list of indices and returns the elements indicated by those indices. If only one index is given, the corresponding array element is returned. If several indices are given, the result is returned as an array in list context or as an array reference in scalar context.

whitelist_pop
    my $value = $obj->whitelist_pop;

Pops the last element off the array, returning it.

whitelist_push
    $obj->whitelist_push(@values);

Pushes elements onto the end of the array.

whitelist_set
    $obj->whitelist_set(1 => $x, 5 => $y);

Takes a list of index/value pairs and for each pair it sets the array element at the indicated index to the indicated value. Returns the number of elements that have been set.

whitelist_shift
    my $value = $obj->whitelist_shift;

Shifts the first element off the array, returning it.

whitelist_splice
    $obj->whitelist_splice(2, 1, $x, $y);
    $obj->whitelist_splice(-1);
    $obj->whitelist_splice(0, -1);

Takes three arguments: An offset, a length and a list.

Removes the elements designated by the offset and the length from the array, and replaces them with the elements of the list, if any. In list context, returns the elements removed from the array. In scalar context, returns the last element removed, or undef if no elements are removed. The array grows or shrinks as necessary. If the offset is negative then it starts that far from the end of the array. If the length is omitted, removes everything from the offset onward. If the length is negative, removes the elements from the offset onward except for -length elements at the end of the array. If both the offset and the length are omitted, removes everything. If the offset is past the end of the array, it issues a warning, and splices at the end of the array.

whitelist_unshift
    $obj->whitelist_unshift(@values);

Unshifts elements onto the beginning of the array.

update

Call this method when you've changed the whitelist() or the blacklist() so the matcher knows about the changes.

is_pobox

This is the central method of this class. It takes a string argument and checks it against the whitelist and the blacklist. Returns a boolean value - true if the string passes the whitelist or is at least not caught by the blacklist, false if the string is caught by the blacklist.

is_pobox_relaxed

Like is_pobox(), but once a string passes the whitelist, it is not checked against the blacklist anymore. That is, if a string matches the whitelist, it is valid. If not, it is checked against the blacklist - if it matches, it is invalid. If it matches neither whitelist nor blacklist, it is valid.

Business::Address::POBox inherits from Class::Accessor::Complex, Class::Accessor::Constructor, and Class::Accessor::Constructor::Base.

The superclass Class::Accessor::Complex defines these methods and functions:

    mk_abstract_accessors(), mk_array_accessors(), mk_boolean_accessors(),
    mk_class_array_accessors(), mk_class_hash_accessors(),
    mk_class_scalar_accessors(), mk_concat_accessors(),
    mk_forward_accessors(), mk_hash_accessors(), mk_integer_accessors(),
    mk_new(), mk_object_accessors(), mk_scalar_accessors(),
    mk_set_accessors(), mk_singleton()

The superclass Class::Accessor defines these methods and functions:

    _carp(), _croak(), _mk_accessors(), accessor_name_for(),
    best_practice_accessor_name_for(), best_practice_mutator_name_for(),
    follow_best_practice(), get(), make_accessor(), make_ro_accessor(),
    make_wo_accessor(), mk_accessors(), mk_ro_accessors(),
    mk_wo_accessors(), mutator_name_for(), set()

The superclass Class::Accessor::Installer defines these methods and functions:

    install_accessor()

The superclass Class::Accessor::Constructor defines these methods and functions:

    _make_constructor(), mk_constructor(), mk_constructor_with_dirty(),
    mk_singleton_constructor()

The superclass Data::Inherited defines these methods and functions:

    every_hash(), every_list(), flush_every_cache_by_key()

The superclass Class::Accessor::Constructor::Base defines these methods and functions:

    STORE(), clear_dirty(), clear_hygienic(), clear_unhygienic(),
    contains_hygienic(), contains_unhygienic(), delete_hygienic(),
    delete_unhygienic(), dirty(), dirty_clear(), dirty_set(),
    elements_hygienic(), elements_unhygienic(), hygienic(),
    hygienic_clear(), hygienic_contains(), hygienic_delete(),
    hygienic_elements(), hygienic_insert(), hygienic_is_empty(),
    hygienic_size(), insert_hygienic(), insert_unhygienic(),
    is_empty_hygienic(), is_empty_unhygienic(), set_dirty(),
    size_hygienic(), size_unhygienic(), unhygienic(), unhygienic_clear(),
    unhygienic_contains(), unhygienic_delete(), unhygienic_elements(),
    unhygienic_insert(), unhygienic_is_empty(), unhygienic_size()

The superclass Tie::StdHash defines these methods and functions:

    CLEAR(), DELETE(), EXISTS(), FETCH(), FIRSTKEY(), NEXTKEY(), SCALAR(),
    TIEHASH()

BUGS AND LIMITATIONS

No bugs have been reported.

Please report any bugs or feature requests through the web interface at http://rt.cpan.org.

INSTALLATION

See perlmodinstall for information and options on installing Perl modules.

AVAILABILITY

The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit <http://www.perl.com/CPAN/> to find a CPAN site near you. Or see <http://www.perl.com/CPAN/authors/id/M/MA/MARCEL/>.

AUTHORS

Marcel Grünauer, <marcel@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2007-2008 by the authors.

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