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.
>
> HTH,
>
> Rob- Hide quoted text -
>
> - Show quoted text -


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,

Steve


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


Reply via email to