[Dub-pm] Phone numbers

Fergal Daly fergal at esatclear.ie
Tue Oct 19 10:00:30 CDT 2004

On Tue, Oct 19, 2004 at 03:21:29PM +0100, David Cantrell wrote:
> On Tue, Oct 19, 2004 at 02:36:32PM +0100, Dermot McNally wrote:
> > What the other folks said about 048, stands, but there's a snag trying 
> > to incorporate enough clevers to handle this into 
> > Number::Phone::Country. The lookup expects the number you provide to be 
> > in full international format. Arguably, the number +353-48-12345678 is 
> > only a pseudo-international number, as I'm not sure if you can dial it 
> > from anywhere outside ROI.
> I'll have to try it.  Anyone got a company in the north that they
> particularly hate and whose time I can waste trying it out? :-)
> > What are you planning? To have numbers of that format as well as the 
> > +44-28-12345678 equivalent map to a mock-ISO code for NI?
> Look at the source for N::P::Country, and how he handles the craziness
> that is +1.  I'd handle +353 the same way.  And +7, +34, and +39.

That certainly does look crazy.

I did this a few years ago and I did what you're doing, see if the whole
number matches, then chop off the last number and try again, then chop off
and try again... I also tried building a trie (although I didn't know it at
the time).

If you have the following prefixes

12 = GB
13 = IT
121 = IE
245 = CA

your trie looks like

 - 2 = GB
    - 1 = IE
 - 3 = IT
 - 4
   - 5 = CA

and say the number 1278453434 comes along. Then you try to go into 1, which
succeeds, then you try to go into the 2 branch of 1 which succeeds, then you
try to go into the 7 branch of 2 which doesn't succeed because there is no 7
branch so you're finished and the matching prefix is 12 and the country code
is GB.

You can actually do all this with a regex and a hash. For the above, the
regex is


the key is that the longer prefix comes before the shorter prefix. If you
want more efficiency you can make this


Obviously you don't want to go generating them by hand but once you've got
it, it's very nippy. I know someone working for a telco who implemented his
tries in C which was much more efficient, time and space-wise but he can't
release the code,


More information about the Dublin-pm mailing list