This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[inseparable changes from match from perl-5.003_96 to perl-5.003_97]
[perl5.git] / lib / Cwd.pm
index d7a4875..f924a59 100644 (file)
@@ -230,6 +230,7 @@ sub chdir {
 sub _vms_cwd {
     return $ENV{'DEFAULT'}
 }
+
 sub _os2_cwd {
     $ENV{'PWD'} = `cmd /c cd`;
     chop $ENV{'PWD'};
@@ -237,6 +238,8 @@ sub _os2_cwd {
     return $ENV{'PWD'};
 }
 
+*_NT_cwd = \&_os2_cwd unless defined &_NT_cwd;
+
 sub _msdos_cwd {
     $ENV{'PWD'} = `command /c cd`;
     chop $ENV{'PWD'};
@@ -244,36 +247,36 @@ sub _msdos_cwd {
     return $ENV{'PWD'};
 }
 
-my($oldw) = $^W;
-$^W = 0;  # assignments trigger 'subroutine redefined' warning
-if ($^O eq 'VMS') {
-
-    *cwd        = \&_vms_cwd;
-    *getcwd     = \&_vms_cwd;
-    *fastcwd    = \&_vms_cwd;
-    *fastgetcwd = \&_vms_cwd;
-}
-elsif ($^O eq 'NT' or $^O eq 'MSWin32') {
+{
+    local $^W = 0;     # assignments trigger 'subroutine redefined' warning
 
-    # We assume that &_NT_cwd is defined as an XSUB or in the core.
-    *getcwd     = \&_NT_cwd;
-    *fastcwd    = \&_NT_cwd;
-    *fastgetcwd = \&_NT_cwd;
-}
-elsif ($^O eq 'os2') {
-    # sys_cwd may keep the builtin command
-    *cwd        = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
-    *getcwd     = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
-    *fastgetcwd         = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
-    *fastcwd    = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
-}
-elsif ($^O eq 'msdos') {
-    *cwd     = \&_msdos_cwd;
-    *getcwd     = \&_msdos_cwd;
-    *fastgetcwd = \&_msdos_cwd;
-    *fastcwd = \&_msdos_cwd;
+    if ($^O eq 'VMS') {
+        *cwd        = \&_vms_cwd;
+        *getcwd     = \&_vms_cwd;
+        *fastcwd    = \&_vms_cwd;
+        *fastgetcwd = \&_vms_cwd;
+    }
+    elsif ($^O eq 'NT' or $^O eq 'MSWin32') {
+        # We assume that &_NT_cwd is defined as an XSUB or in the core.
+        *cwd        = \&_NT_cwd;
+        *getcwd     = \&_NT_cwd;
+        *fastcwd    = \&_NT_cwd;
+        *fastgetcwd = \&_NT_cwd;
+    }
+    elsif ($^O eq 'os2') {
+        # sys_cwd may keep the builtin command
+        *cwd    = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
+        *getcwd         = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
+        *fastgetcwd     = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
+        *fastcwd        = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
+    }
+    elsif ($^O eq 'msdos') {
+        *cwd     = \&_msdos_cwd;
+        *getcwd     = \&_msdos_cwd;
+        *fastgetcwd = \&_msdos_cwd;
+        *fastcwd = \&_msdos_cwd;
+    }
 }
-$^W = $oldw;
 
 # package main; eval join('',<DATA>) || die $@;        # quick test