[EMAIL PROTECTED] wrote:

On Sep 20, 2:54 am, [EMAIL PROTECTED] (Rob Dixon) wrote:

[EMAIL PROTECTED] wrote:

I am currently trying to write a Perl program in a Solaris 9
environment
I am trying to process a list of variables with UNIX environment
variables embedded in them of the form
$dir_to_check = "$ENV_VAR1/some_dir/$ENV_VAR2/another_dir";
and I am trying to find if another_dir exists, so I have a line of
code that tries to do something like this:
if (-e $dir_to_check) { do some stuff }
which is not working even though the directory that I am checking for
does indeed exist.
Is there something simple that I am just missing, or is there a
problem with Perl not evaluating the environment
variables embedded in the path that I am check?
First of all, I think you need to add

  use strict;
  use warnings;

to the top of your program and declare all Perl variables with 'my'. This
will help you enormously to get your program working.

Also, try printing the value of $dir_to_check to see if it contains the
string you think it does.

Is this your exact code? Because $ENV_VAR1 etc are simply Perl variables
and aren't related to the values of the environment variables. Fortunately
for your programming convenience there is a built-in hash called %ENV which
does contain values from the enviroment. Write something like

  my $dir_to_check = "$ENV{varname1}/some_dir/$ENV{varname2}/another_dir";

and you should get the result you expect.


Rob,

Actually, $ENV1 and $ENV2 are environment variable that are set by someone else's script. They are embedded in the strings that I have
to process. I'd like to avoid using the %ENV hash or adding yet more
pattern matching to my program if there is a simpler way of doing
things.

It's not my exact code, merely the gist of what I am trying to do. As
I said, the directory I am searching for exists. If I print out the
$dir_to_check string, it gives me $ENV1/some_dir/$ENV2/another_dir and echo $ENV1 and echo $ENV2 typed from the shell expand to give me what I expect. Being somewhat new to Perl, I am not entirely sure of
the behavior of all the commands. Perl seems to be remarkably
intuitive, and I was hoping that either a file existence check would
automatically interpret a string containing $VAR_NAME as an environment variable, or that there was some simple way of getting it
to do so.

I would appreciate any further insights into my problem anyone can
give me,

You know what? This has really annoyed me. You're new to Perl but you
don't like what I've suggested and you want people to keep posting
answers until you see something you like.

What I wrote is good advice: take it. And if you're not familiar with
Perl then don't expect to be able to reliably extract the 'gist' of
your code: post what you actually have.

Rob

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to