diff options
author | Andy Dougherty <doughera.lafayette.edu> | 1995-12-21 00:01:16 +0000 |
---|---|---|
committer | Andy Dougherty <doughera.lafayette.edu> | 1995-12-21 00:01:16 +0000 |
commit | cb1a09d0194fed9b905df7b04a4bc031d354609d (patch) | |
tree | f0c890a5a8f5274873421ac573dfc719188e5eec /lib/Text | |
parent | 3712091946b37b5feabcc1f630b32639406ad717 (diff) | |
download | perl-cb1a09d0194fed9b905df7b04a4bc031d354609d.tar.gz |
This is patch.2b1g to perl5.002beta1.
cd to your perl source directory, and type
patch -p1 -N < patch.2b1g
This patch is just my packaging of Tom's documentation patches
he released as patch.2b1g.
Patch and enjoy,
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College, Easton PA 18042
Diffstat (limited to 'lib/Text')
-rw-r--r-- | lib/Text/Soundex.pm | 84 | ||||
-rw-r--r-- | lib/Text/Tabs.pm | 29 | ||||
-rw-r--r-- | lib/Text/Wrap.pm | 25 |
3 files changed, 129 insertions, 9 deletions
diff --git a/lib/Text/Soundex.pm b/lib/Text/Soundex.pm index 655152347c..a334404667 100644 --- a/lib/Text/Soundex.pm +++ b/lib/Text/Soundex.pm @@ -40,19 +40,12 @@ require Exporter; $soundex_nocode = undef; -# soundex -# -# usage: -# -# @codes = &soundex (@wordList); -# $code = &soundex ($word); -# -# This strenuously avoids 0 - sub soundex { local (@s, $f, $fc, $_) = @_; + push @s, '' unless @s; # handle no args as a single empty string + foreach (@s) { tr/a-z/A-Z/; @@ -80,3 +73,76 @@ sub soundex 1; +__END__ + +=head1 NAME + +Text::Soundex - Implementation of the Soundex Algorithm as Described by Knuth + +=head1 SYNOPSIS + + 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'; + +=head1 DESCRIPTION + +This module implements the soundex algorithm as described by Donald Knuth +in Volume 3 of B<The Art of Computer Programming>. The algorithm is +intended to hash words (in particular surnames) into a small space using a +simple model which approximates the sound of the word when spoken by an English +speaker. Each word is reduced to a four character string, the first +character being an upper case letter and the remaining three being digits. + +If there is no soundex code representation for a string then the value of +C<$soundex_nocode> is returned. This is initially set to C<undef>, but +many people seem to prefer an I<unlikely> value like C<Z000> +(how unlikely this is depends on the data set being dealt with.) Any value +can be assigned to C<$soundex_nocode>. + +In scalar context C<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 C<soundex> e.g. + + @codes = soundex qw(Mike Stok); + +leaves C<@codes> containing C<('M200', 'S320')>. + +=head1 EXAMPLES + +Knuth's examples of various names and the soundex codes they map to +are listed below: + + 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' + +=head1 LIMITATIONS + +As the soundex algorithm was originally used a B<long> time ago in the US +it considers only the English alphabet and pronunciation. + +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 C<Hilbert> and C<Heilbronn> end up with a soundex code +of C<H416>. + +=head1 AUTHOR + +This code was implemented by Mike Stok (C<stok@cybercom.net>) from the +description given by Knuth. Ian Phillips (C<ian@pipex.net>) and Rich Pinder +(C<rpinder@hsc.usc.edu>) supplied ideas and spotted mistakes. diff --git a/lib/Text/Tabs.pm b/lib/Text/Tabs.pm index 7cfb478b75..2481d81ec6 100644 --- a/lib/Text/Tabs.pm +++ b/lib/Text/Tabs.pm @@ -10,6 +10,35 @@ # Version: 9/21/95 # +=head1 NAME + +Text::Tabs -- expand and unexpand tabs + +=head1 SYNOPSIS + + use Text::Tabs; + + #$tabstop = 8; # Defaults + print expand("Hello\tworld"); + print unexpand("Hello, world"); + $tabstop = 4; + print join("\n",expand(split(/\n/, + "Hello\tworld,\nit's a nice day.\n" + ))); + +=head1 DESCRIPTION + +This module expands and unexpands tabs into spaces, as per the unix expand +and unexpand programs. Either function should be passed an array of strings +(newlines may I<not> be included, and should be used to split an incoming +string into separate elements.) which will be processed and returned. + +=head1 AUTHOR + +David Muir Sharnoff <muir@idiom.com> + +=cut + package Text::Tabs; require Exporter; diff --git a/lib/Text/Wrap.pm b/lib/Text/Wrap.pm index 9b1d054704..b665752f94 100644 --- a/lib/Text/Wrap.pm +++ b/lib/Text/Wrap.pm @@ -30,6 +30,31 @@ package Text::Wrap; # Version: 9/21/95 # +=head1 NAME + +Text::Wrap -- wrap text into a paragraph + +=head1 SYNOPSIS + + use Text::Wrap; + + $Text::Wrap::columns = 20; # Default + print wrap("\t","",Hello, world, it's a nice day, isn't it?"); + +=head1 DESCRIPTION + +This module is a simple paragraph formatter that wraps text into a paragraph +and indents each line. The single exported function, wrap(), takes three +arguments. The first is included before the first output line, and the +second argument is included before each subsequest output line. The third +argument is the text to be wrapped. + +=head1 AUTHOR + +David Muir Sharnoff <muir@idiom.com> + +=cut + require Exporter; @ISA = (Exporter); |