home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / topware / activeperl / ActivePerl-5.8.4.810-MSWin32-x86.exe / ActivePerl-5.8.4.810 / Perl / lib / abbrev.pl < prev    next >
Perl Script  |  2004-06-01  |  881b  |  44 lines

  1. ;# Usage:
  2. ;#    %foo = ();
  3. ;#    &abbrev(*foo,LIST);
  4. ;#    ...
  5. ;#    $long = $foo{$short};
  6.  
  7. #
  8. # This library is no longer being maintained, and is included for backward
  9. # compatibility with Perl 4 programs which may require it.
  10. #
  11. # In particular, this should not be used as an example of modern Perl
  12. # programming techniques.
  13. #
  14. # Suggested alternative: Text::Abbrev
  15. #
  16.  
  17. package abbrev;
  18.  
  19. sub main'abbrev {
  20.     local(*domain) = @_;
  21.     shift(@_);
  22.     @cmp = @_;
  23.     local($[) = 0;
  24.     foreach $name (@_) {
  25.     @extra = split(//,$name);
  26.     $abbrev = shift(@extra);
  27.     $len = 1;
  28.     foreach $cmp (@cmp) {
  29.         next if $cmp eq $name;
  30.         while (@extra && substr($cmp,0,$len) eq $abbrev) {
  31.         $abbrev .= shift(@extra);
  32.         ++$len;
  33.         }
  34.     }
  35.     $domain{$abbrev} = $name;
  36.     while ($#extra >= 0) {
  37.         $abbrev .= shift(@extra);
  38.         $domain{$abbrev} = $name;
  39.     }
  40.     }
  41. }
  42.  
  43. 1;
  44.