in reply to chdir: failure

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

Replies are listed 'Best First'.
Re^2: chdir: failure
by Rabbi Bob (Scribe) on Jul 17, 2007 at 11:13 UTC
    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