This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
charnames: Abbreviations wrong on certain C1 controls
[perl5.git] / lib / abbrev.pl
index 5859a7b..d46321f 100644 (file)
@@ -1,9 +1,23 @@
+warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n";
+
 ;# 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.
+# This legacy library is deprecated and will be removed in a future
+# release of perl.
+#
+# In particular, this should not be used as an example of modern Perl
+# programming techniques.
+#
+# Suggested alternative: Text::Abbrev
+#
+
 package abbrev;
 
 sub main'abbrev {
@@ -16,7 +30,7 @@ sub main'abbrev {
        $len = 1;
        foreach $cmp (@cmp) {
            next if $cmp eq $name;
-           while (substr($cmp,0,$len) eq $abbrev) {
+           while (@extra && substr($cmp,0,$len) eq $abbrev) {
                $abbrev .= shift(@extra);
                ++$len;
            }