![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
use Text::Soundex;
$code = soundex $string; # get soundex code for a string @codes = soundex @list; # get list of codes for list of strings
# set value to be returned for strings without soundex code
$soundex_nocode = 'Z000';
If there is no soundex code representation for a string then the value of
$soundex_nocode
is returned. This is initially set to undef
, but many people seem to prefer an unlikely value like Z000
(how unlikely this is depends on the data set being dealt with.) Any value
can be assigned to $soundex_nocode
.
In scalar context soundex
returns the soundex code of its first argument, and in array context a list
is returned in which each element is the soundex code for the corresponding
argument passed to soundex
e.g.
@codes = soundex qw(Mike Stok);
leaves @codes
containing ('M200', 'S320')
.
Euler, Ellery -> E460 Gauss, Ghosh -> G200 Hilbert, Heilbronn -> H416 Knuth, Kant -> K530 Lloyd, Ladd -> L300 Lukasiewicz, Lissajous -> L222
so:
$code = soundex 'Knuth'; # $code contains 'K530' @list = soundex qw(Lloyd Gauss); # @list contains 'L300', 'G200'
As it is mapping a large space (arbitrary length strings) onto a small
space (single letter plus 3 digits) no inference can be made about the
similarity of two strings which end up with the same soundex code. For
example, both Hilbert
and Heilbronn
end up with a soundex code of H416
.
stok@cybercom.net
) from the description given by Knuth. Ian Phillips (ian@pipex.net
) and Rich Pinder (rpinder@hsc.usc.edu
) supplied ideas and spotted mistakes.
$CommentsMailTo = "perl5@dcs.ed.ac.uk"; include("../syssies_footer.inc");?>