summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-11-06 22:41:41 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-11-06 22:41:41 +0000
commit4a0d0822a0fb67de81c25c5d18eb45f80b490bcd (patch)
tree17a3366c24100336814dec9c12ce701a1aea7980
parentee76630538be506861c581ad2645018d52de6a58 (diff)
downloadperl-4a0d0822a0fb67de81c25c5d18eb45f80b490bcd.tar.gz
Document %ENV = () portability issues.
p4raw-id: //depot/perl@7580
-rw-r--r--pod/perlport.pod5
-rw-r--r--vms/perlvms.pod6
2 files changed, 10 insertions, 1 deletions
diff --git a/pod/perlport.pod b/pod/perlport.pod
index d1887bfbc8..a06da4490b 100644
--- a/pod/perlport.pod
+++ b/pod/perlport.pod
@@ -334,7 +334,10 @@ operating systems put mandatory locks on such files.
Don't count on a specific environment variable existing in C<%ENV>.
Don't count on C<%ENV> entries being case-sensitive, or even
-case-preserving.
+case-preserving. Don't try to clear %ENV by saying C<%ENV = ();>, or,
+if you really have to, make it conditional on C<$^O ne 'vms'> since in
+VMS the C<%ENV> table is much more than a per-process key-value string
+table.
Don't count on signals or C<%SIG> for anything.
diff --git a/vms/perlvms.pod b/vms/perlvms.pod
index 17e83e5c1b..25058bc902 100644
--- a/vms/perlvms.pod
+++ b/vms/perlvms.pod
@@ -788,6 +788,12 @@ by saying
(You can't just say C<$ENV{$key} = $ENV{$key}>, since the
Perl optimizer is smart enough to elide the expression.)
+Don't try to clear C<%ENV> by saying C<%ENV = ();> Bad things will
+happen because parts of C<%ENV> are per-process, parts of it are
+per-group, and parts of it are system-wide. Without some serious
+rights, it won't work, or with the rights, it does, but the system
+will effectively die.
+
At present, the first time you iterate over %ENV using
C<keys>, or C<values>, you will incur a time penalty as all
logical names are read, in order to fully populate %ENV.