http://qs321.pair.com?node_id=626966

PerlMe has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to use chdir perl call
But the call always returns false. what are the probable reasons for this. The permission for the $CURRDIR directory are good.
$DATE = `date +%Y-%m-%d`; $CURRDIR = '/home/'.$USER.'/'.$DATE; #chdir ($CURRDIR) || die "couldn't change the directory";
Output:: couldn't change the directory

Replies are listed 'Best First'.
Re: chdir: failure
by Zaxo (Archbishop) on Jul 17, 2007 at 05:31 UTC

    If you die $! instead of using a custom message, you'll find out what the OS thinks is wrong.

    After Compline,
    Zaxo

Re: chdir: failure
by cdarke (Prior) on Jul 17, 2007 at 08:28 UTC
    For some strange reason you are calling the external program 'date' instead of using the Perl built-ins. Anyway, date(1) writes a line to STDOUT, terminated with a new-line "\n". Since you are using that in the directory name, Perl expects this new-line to be in the directory name also.
    chomp $DATE;
    Better yet, use localtime or POSIX::strftime
      Building on the above suggestions:
      $DATE = `date +%Y-%m-%d`; chomp $DATE; $CURRDIR = '/home/'.$USER.'/'.$DATE; chdir ($CURRDIR) || die "Couldn't change to $CURRDIR Reason: $!";
      You most likely will find that you are not pulling $USER into the directory line.
      -sh-3.1$ perl chdirtest.pl Couldn't change to /home//2007-07-17 Reason: No such file or directory + at chdirtest.pl line 4.
      Try assigning $USER, perhaps using get_login();
      $DATE = `date +%Y-%m-%d`; chomp $DATE; my $USER=getlogin(); $CURRDIR = '/home/'.$USER.'/'.$DATE; chdir ($CURRDIR) || die "Couldn't change to $CURRDIR Reason: $!";
      "The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it." - Terry Pratchett
        Thanks all,
        It works now. The problem was $date string terminated with a new-line "\n".
        I appreciate all the comments on '$user', '$!' and 'chomp'.
        Rami
Re: chdir: failure
by dsheroh (Monsignor) on Jul 17, 2007 at 05:35 UTC
    Have you checked the value of $CURRDIR to verify that it ends up being what you intend it to be and that the directory exists?