in reply to Re: chdir in perl
in thread chdir in perl

Dear All, Thanks for your concerns and suggestions. The idea of $mpath i.e., when I execute this command: `/vobs/package134/inttools/modules/unixtools/srce/whichPath $m :: I will get the output as /vobs/package183/psappat/modules/<module name, that is having the $m value in the foreach loop>, So now I want to cd into this module, and then cd into confm folder, Here in this path/location, My intention is to check whether post_REFERENCED_to_EXPERIMENTAL file exists? and if so, find the link attached to this file. My concern is still I am not able to CHDIR into module. Please suggest. Modified Script:
use Cwd qw(chdir); open(LS, "/home/raghvens/52xxmodulelist.txt") or die $!; @modlist = <LS>; @mpath = " "; foreach $m (@modlist) { print "\nProcessing $m .. \n"; $mpath = `/vobs/package134/inttools/modules/unixtools/srce/whichPat +h $m`; print "\nModule Path is $mpath \n"; chomp($mpath); $path = `chdir $mpath`; # or die "Can't cd into module path:$mpath +\n"; print "\nCurrent Path is $path"; if(! chdir($mpath)){ print "\n cannot change the working directory \n"; } `chdir confm`; $file = "post_REFERENCED_to_EXPERIMENTAL"; @output = system ("ls -l $file"); print "YES, Link is present" if $_ =~ /\-\>/ ; }
This is the output of the script:
Processing atp .. Module Path is /vobs/package183/psappat/modules/atp post_REFERENCED_to_EXPERIMENTAL: No such file or directory Current Path is Processing atpctm .. Module Path is /vobs/package183/psappat/modules/atpctm post_REFERENCED_to_EXPERIMENTAL: No such file or directory

Replies are listed 'Best First'.
Re^3: chdir in perl
by ig (Vicar) on Sep 29, 2009 at 07:18 UTC

    Why do you think chdir is not working?

    Make sure you understand the previous responses. They all provide good advice and relevant information. To re-iterate: you should use the chdir function rather than executing the chdir command in a sub-process.

    But I wouldn't use chdir myself. I would do something more like the following:

    use strict; use warnings; open( my $fh, "/home/raghvens/52xxmodulelist.txt" ) or die $!; foreach my $m (<$fh>) { chomp($m); print "\nProcessing \"$m\" .. \n"; my $path = `/vobs/package134/inttools/modules/unixtools/srce/which +Path $m`; chomp($path); $path .= '/confm/post_REFERENCED_to_EXPERIMENTAL'; print "\tChecking for link \"$path\"\n"; print "YES, Link is present" if(-l $path); }
      Hi, Sorry, for the late response, I was not feeling well. Thanks for your suggestions. It works now!!! I was confused before, as the file post_REFERENCED_to_EXPERIMENTAL was not existing in some directories. I really appreciate for your kind support in making me understand the chdir philosophy... Thanks Again, BR
Re^3: chdir in perl
by raghvens (Novice) on Sep 29, 2009 at 05:28 UTC
    Strange part is that, manually i am able to cd into all modules and respective confm folder to see the properties of the post_REFERENCED_to_EXPERIMENTAL file!!!