From 4a0d0822a0fb67de81c25c5d18eb45f80b490bcd Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Mon, 6 Nov 2000 22:41:41 +0000 Subject: [PATCH] Document %ENV = () portability issues. p4raw-id: //depot/perl@7580 --- pod/perlport.pod | 5 ++++- vms/perlvms.pod | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pod/perlport.pod b/pod/perlport.pod index d1887bf..a06da44 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 17e83e5..25058bc 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, or C, you will incur a time penalty as all logical names are read, in order to fully populate %ENV. -- 2.7.4