http://www.perlmonks.org?node_id=995804

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

Hi, I have written a small code for ftp to a remote machine and then go to one particular folder (based on some date) and then renaming the files. My problem is for some dates it works fine but for some, it does not get anything for the folder name (which I am getting using 'pwd'). Here is the snippet of my code -
$file_type = '.txt'; if ($Filename !~ m/($file_type)$/) { $new_file_name = $Filename . '.txt'; $ftp->cwd($EffDate); $pwd_source = $ftp->pwd; &fide_msg ("I am here: $pwd_source"); $ftp->rename($Filename, $new_file_name); &f_msg ("$Filename does not have extension of .txt. Re +naming file to $new_file_name..."); }
Here, I am getting $EFFDATE properly in all cases but pwd does not return me anything for few dates. Any help will be highly appreciated. Thanks!!

Replies are listed 'Best First'.
Re: Need help for Net::FTP module
by Illuminatus (Curate) on Sep 26, 2012 at 16:42 UTC
    From the Net::Ftp documentation on cpan.org:
    $ftp->cwd("/pub") or die "Cannot change working directory ", $ftp->message;
    you're not checking the return codes of any of the methods you are invoking. That's where I'd start. Also, depending on which ftp server you're using, you might be able to crank up the debug level there, and get info on why commands are failing.

    fnord

      Thanks for the reply. Yes I should do that but currently I have to live with what I have coded. I am trying to understand that even if $ftp->cwd would have failed, $ftp->pwd should give me my current working directory but unfortunatelt I am not getting anything in $pwd_source and it prints as "I am here: "
        You didn't post the code where your program connects to the host. If you're not checking the return from ->login, then I would expect ->pwd to fail as it's doing if the login failed.

        fnord