On Sep 20, 9:29 am, [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.
>
> > 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




Never Mind.

I found out how to solve the problem with backquotes:

$dir_to_check = `echo $dir_to_check`;

if (-e $dir_to_check) now finds the appropriate directory.

Steve







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


Reply via email to