On Sep 21, 3:48 pm, [EMAIL PROTECTED] wrote:
> 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

Why?

> > or adding yet more pattern matching to
> > my program  if there is a simpler way of doing things.

Why the mention of pattern matching?

> > It's not my exact code, merely the gist of what I am trying to do.

If you really want help, post actual code (short but complete proram
that demonstrates the problem).

> > 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

You are quite sure this is what it gives you. I would like to see that
code.  By saying this you have probably made a lot of people
disinclined to help you. You not only refuse to post code, but then
you give inaccurate output.

> > 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.

$ENV{ENV1} is not simple enough?

or

use Env 'ENV1';

Then $ENV1 would refer to the environment variable.

>
> > 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`;
>

And this is simpler than the other methods?

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

You really have not given enough detail (code, etc).
How is your script being called (evidently not by the script that sets
the environment variable)?
There could be other ways of accomplishing your goal (e.g. passing the
value as an argument to the Perl program), but if you do not give a
good description of your problem, others can only guess at what might
be the best way to handle your problem.

Ken





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


Reply via email to