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/