in reply to using chdir($variable_name) to change directory

shridhar22:

You show that it displays "ms_qu/the/path/wirtten/in/file". But that path isn't rooted to "/", so chdir will be able to move to that directory if your program executes in a/the directory that leads to that location. Keep in mind that after changing to a directory, the next directory will likely fail for the same reason.

...roboticus

When your only tool is a hammer, all problems look like your thumb.

  • Comment on Re: using chdir($variable_name) to change directory

Replies are listed 'Best First'.
Re^2: using chdir($variable_name) to change directory
by shridhar22 (Novice) on Jul 06, 2011 at 07:23 UTC

    thanks for the reply sir, i have actully trie every kind of possible path by editing the small.txt file which contains the list of path. i've tried: abc/def/ijk /abc/def/ijk ./abc/def/ijk "abc/def/ijk" all dont work please help thanks

      shridhar22:

      Instead of $1, use $! inside your error messages, and you'll get a more useful error message. If you want a more descriptive error message, add use diagnostics; to the beginning of your program. You may also want to put quotes around the input variable name inside your print statement so you can see if you've properly removed any extra whitespace from the path.

      I also use indentation to clarify my code, so I've put my suggestions in your program to come up with:

      use diagnostics; open(LIST,"small.txt") or die "Can't open small.txt: $!"; @arr= <LIST>; for($i = 0; $i < @arr; $i++) { chomp($arr[$i]); print "path read from file = '$arr[$i]'\n"; #it displays => ms_qu/the/path/written/in/file (fine till here +but it shud go to this place when i use chdir) chdir $arr[$i] or die "Can't change directory: $!"; print "After chdir, cwd is = "; system("pwd"); }

      I haven't tested it, though, so give it a try and see if the error messages give you the information you need to fix it.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

      Dear shridhar22, you need to read and understand Re: using chdir($variable_name) to change directory

      Relative paths are relative

      If you're standing in the living room, and ask me for directions to the bathroom and the bedroom, and I tell you:
      the bathroom is first door on the left
      the bedroom is second door on the right

      And you visit the bathroom successfully, and now wish to go to the bedroom, you can't go to the second door on the right!!

      The bedroom, is the second door on the right, only if your starting position is the living room.

      If your starting position is the bathroom, the second door on the right is not the bedroom!

      To find the bedroom by the path "the second door on the right" you have to go back to the living room.

        and thanks for such a nice explanation sir!!

        Dear Tux, i understand what u r trying to explain. im definetely comming back to where i started. sorry i didnt include the full code...which includes coming back to cwd but it still doesnt work.

        use Cwd; $BACK= getcwd(); open(LIST,"small.txt") or die "Cant open small.txt"; @arr= <LIST>; for($i = 0; $i < @arr; $i++) { chomp($arr[$i]); print "path read from file = $arr[$i]\n"; #it displays => ms_qu/the/path/written/in/file (fine till here but +it shud go to this place when i use chdir) chdir $arr[$i] or die "$1"; print "After chdir, cwd is = "; system("pwd"); chdir($BACK); print "Now im back to where i started"; system("pwd"); }