diff options
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/abbrev.pl')
-rwxr-xr-x | Master/tlpkg/tlperl0/lib/abbrev.pl | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl0/lib/abbrev.pl b/Master/tlpkg/tlperl0/lib/abbrev.pl new file mode 100755 index 00000000000..c505a6f28bd --- /dev/null +++ b/Master/tlpkg/tlperl0/lib/abbrev.pl @@ -0,0 +1,43 @@ +;# Usage: +;# %foo = (); +;# &abbrev(*foo,LIST); +;# ... +;# $long = $foo{$short}; + +# +# This library is no longer being maintained, and is included for backward +# compatibility with Perl 4 programs which may require it. +# +# In particular, this should not be used as an example of modern Perl +# programming techniques. +# +# Suggested alternative: Text::Abbrev +# + +package abbrev; + +sub main'abbrev { + local(*domain) = @_; + shift(@_); + @cmp = @_; + local($[) = 0; + foreach $name (@_) { + @extra = split(//,$name); + $abbrev = shift(@extra); + $len = 1; + foreach $cmp (@cmp) { + next if $cmp eq $name; + while (@extra && substr($cmp,0,$len) eq $abbrev) { + $abbrev .= shift(@extra); + ++$len; + } + } + $domain{$abbrev} = $name; + while ($#extra >= 0) { + $abbrev .= shift(@extra); + $domain{$abbrev} = $name; + } + } +} + +1; |