Beefy Boxes and Bandwidth Generously Provided by pair Networks Russ
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

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

Comment on chdir: failure
Download Code
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 dsheroh (Parson) 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?
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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2014-04-20 04:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (485 votes), past polls