If you look back
to the counter CGI applications in previous chapters, you will see
that we saved the counter data in a text file. Some CGI programmers
want to avoid using a file, and try to store the information in
an environment variable. So they write code that resembles the following:
if ($ENV{'COUNTER'}) {
$ENV{'COUNTER'}++;
} else {
$ENV{'COUNTER'} = 1;
}
To their surprise, however, the counter value is always the
same (1, in this case). The point behind this is that you cannot
save any environment variables directly from Perl, although it is
possible to do so by invoking the shell.
Basically, when a Perl program is started, a child process
is created. And the cardinal rule in UNIX is
that child processes cannot permanently affect their parent shell.