in reply to Re: problem with put function
in thread problem with put function

<body>when i execute the script with debug option set following is the output
Net::FTP: Net::FTP(2.65)
Net::FTP: Exporter(5.567)
Net::FTP: Net::Cmd(2.21)
Net::FTP: IO::Socket::INET(1.26)
Net::FTP: IO::Socket(1.27)
Net::FTP: IO::Handle(1.21)
Net::FTP=GLOB(0x82b0570)<<< 220 ftp FTP server (Version wu-2.6.2-5) ready.
Net::FTP=GLOB(0x82b0570)>>> user *****
Net::FTP=GLOB(0x82b0570)<<< 331 Password required for *****.
Net::FTP=GLOB(0x82b0570)>>> PASS ....
Net::FTP=GLOB(0x82b0570)<<< 230 User ***** logged in. Access restrictions apply.
Net::FTP=GLOB(0x82b0570)>>> CWD /
Net::FTP=GLOB(0x82b0570)<<< 250 CWD command successful.
Net::FTP=GLOB(0x82b0570)>>> TYPE A
Net::FTP=GLOB(0x82b0570)<<< 200 Type set to A.
Net::FTP=GLOB(0x82b0570)>>> PASV
Net::FTP=GLOB(0x82b0570)<<< 227 Entering Passive Mode (***,***,***,**,***,***)
Net::FTP=GLOB(0x82b0570)>>> STOR oldkamsApplicationLog.txt
Net::FTP=GLOB(0x82b0570)<<< 425 Can't open data connection

Replies are listed 'Best First'.
Re^3: problem with put function
by kamesh3183 (Beadle) on Oct 12, 2004 at 12:33 UTC
    my code is here
    sub FtpToDCLKServer(\%$\$\$) {
    my $V_ConfigHashRef = shift;
    my $V_LocalFile = shift;
    my $V_RemoteFileNameRef = shift;
    my $V_RemoteFileSizeRef = shift;
    my $V_CurrentDate = GetTheCurrentDate(); #get today's date
    my $V_HostName = $V_ConfigHashRef->{FTPHostName}; #get ftp hostname from the hash
    my $V_UserName = $V_ConfigHashRef->{FTPUserName}; #get ftp user name from the hash
    my $V_Password = $V_ConfigHashRef->{FTPPassword}; #get ftp password from the hash
    my $V_Directory = $V_ConfigHashRef->{FTPDir}; #get the ftp directory on to which we have to place the files
    my $V_Ftp;
    if ( $V_Ftp = Net::FTP->new($V_HostName) ) { #instantiate new ftp object
    unless ($V_Ftp->login($V_UserName,$V_Password)) { #login to the ftp server
    WriteToLogFile($V_CurrentDate,GetTheCurrentTime(),"Error","Could not login:$@");
    return 0;
    $V_Ftp->pasv(); #continue the session in passive mode
    unless ($V_Ftp->cwd($V_Directory)) { #change the current working directory to $V_Directory
    WriteToLogFile($V_CurrentDate,GetTheCurrentTime(),"Error","Could not change the current working directory to $V_Directory");
    return 0;
    unless($V_Ftp->ascii) { #transfer the data in ascii mode
    WriteToLogFile($V_CurrentDate,GetTheCurrentTime(),"Error","Could not change to ASCII mode");
    return 0;
    unless ($$V_RemoteFileNameRef = $V_Ftp->put($V_LocalFile,"Curve_"."$V_CurrentDate"."\.dat")) { #upload the file
    return 0;
    $$V_RemoteFileSizeRef = $V_Ftp->size($$V_RemoteFileNameRef);
    $V_Ftp->close(); #close the ftp session
    }else {
    WriteToLogFile($V_CurrentDate,GetTheCurrentTime(),"Error","Could not connect:$@");
    return 0;
    return 1;

      You don't say whether you are seeing this problem on every connection you make, or just those at one server?

      I'm no ftp expert, but I'd try your code without the call to pasv() and see how you get on?

      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "Think for yourself!" - Abigail
      "Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon