| Business-DK-Phonenumber documentation | Contained in the Business-DK-Phonenumber distribution. |
Class::Business::DK::Phonenumber - class to model, validate and format Danish telephonenumbers
This documentation describes version 0.01
use Class::Business::DK::Phonenumber;
#Constructor
my $phonenumber = Class::Business::DK::Phonenumber->new('+45 12345678');
#Brief human readable Danish phonenumber format with international prefix
print $phonenumber->render('%02d %02d %02d %02d');
#a brief form validating a stripping everything
my $phonenum =
Class::Business::DK::Phonenumber->new('+45 12 34 56 78')->render('%d8');
# 12345678
#for MSISDN like representation with protocol prefix
my $phonenum =
Class::Business::DK::Phonenumber->new('+45 12 34 56 78')->render('GSM%d10');
# GSM4512345678
#for dialing Denmark with international country prefix and international
#calling code for calling outside Denmark 00
my $phonenum =
Class::Business::DK::Phonenumber->new('12 34 56 78')->render('00%d10');
# 004512345678
This module offers functionality to validate, format and generate Danish phonenumbers using object-oriented programming.
Please see:
The contructor can recognise telephone numbers is the following formats as Danish phonenumbers.
White space characters are ignored. See also phonenumber.
For valid phone number formatting please refer to phonenumber.
This is accessor to the phonenumber attribute.
Provided with a valid phone number parameter the object's phone number attribute is set.
If the accessor is not provided with a phonenumber parameter, the one defined is in the object is returned.
See also: validate in Business::DK::Phonenumber, which is used internally to validate the phonenumber parameter.
Valid phone numbers have to abide to the following formatting:
The prefixed plus sign and space used as separator are optional as are the international dialing code.
The phone number can be formatted in anyway separated using whitespace characters.
This is accessor to the template attribute.
Provided with a valid template parameter the object's template attribute is set.
If the accessor is not provided with a template parameter, the one defined is in the object is returned.
See also: validate_template in Business::DK::Phonenumber, which is used internally to validate the template parameter.
No special configuration or environment is necessary.
No known incompatibilities at this time.
No known bugs or limitations at this time.
Business::DK::Phonenumber utilizes sprintf to as templating system for formatting telephonenumbers. This is a well specified and tested interface which is easy to use.
Please report issues via CPAN RT:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-DK-Phonenumber
or by sending mail to
bug-Business-DK-Phonenumber@rt.cpan.org
I have been working in Telco for a long time. So validation and formatting of telephone numbers is something I have seen at lot of. This module is an attempt to sort of consolidate the numerous different regular expression solutions I have seen scathered over large code bases.
Jonas B. Nielsen, (jonasbn) - <jonasbn@cpan.org>
Class-Business-DK-Phonenumber is (C) by Jonas B. Nielsen, (jonasbn) 2008-2009
Class-Business-DK-Phonenumber is released under the artistic license
The distribution is licensed under the Artistic License, as specified by the Artistic file in the standard perl distribution (http://www.perl.com/language/misc/Artistic.html).
| Business-DK-Phonenumber documentation | Contained in the Business-DK-Phonenumber distribution. |
package Class::Business::DK::Phonenumber; # $Id: Phonenumber.pm 6249 2009-06-19 20:37:05Z jonasbn $ use strict; use warnings; use vars qw($VERSION); use Carp qw(croak); use Business::DK::Phonenumber qw(validate render validate_template DEFAULT_TEMPLATE DK_PREFIX TRUE FALSE); $VERSION = '0.01'; ## no critic (ValuesAndExpressions::ProhibitEmptyQuotes, ValuesAndExpressions::ProhibitInterpolationOfLiterals) use overload "" => \&render; sub new { my ( $class, $params ) = @_; my $self = bless { phonenumber => 0, template => DEFAULT_TEMPLATE, prefix => DK_PREFIX, }, $class || ref $class; if ( $params->{phonenumber} ) { $self->phonenumber( $params->{phonenumber} ) or croak "phonenumber >$params->{phonenumber}< not in recognisable format"; } else { croak 'phonenumber parameter is mandatory'; } if ( $params->{template} ) { $self->template( $params->{template} ) or croak "template >$params->{template}< not in recognisable format"; } $self->{prefix} = $params->{prefix}; return $self; } sub phonenumber { my ( $self, $phonenumber, $template ) = @_; if ($phonenumber) { my $tmp_phonenumber = $self->{phonenumber}; if ( validate($phonenumber) ) { $self->{phonenumber} = $phonenumber; if ( $self->template($template) ) { return TRUE; } else { $self->{phonenumber} = $tmp_phonenumber; croak "template >$template< not in recognisable format"; } return TRUE; } else { return FALSE; } } else { if ($template) { if ( $self->validate_template($template) ) { return $self->render( undef, $template ); } else { croak "template >$template< not in recognisable format"; } } else { return $self->render(); } } } sub template { my ( $self, $template ) = @_; if ($template) { if ( $self->validate_template($template) ) { $self->{template} = $template; return TRUE; } else { return FALSE; } } else { return $self->{template}; } } 1; __END__