Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

chdir: failure

by PerlMe (Novice)
on Jul 17, 2007 at 05:19 UTC ( #626966=perlquestion: print w/replies, xml ) Need Help??

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,

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 Couldn't change to /home//2007-07-17 Reason: No such file or directory + at 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'.
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?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://626966]
Approved by Zaxo
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2021-04-23 01:59 GMT
Find Nodes?
    Voting Booth?

    No recent polls found