in reply to problem with put function

any idea why it is happenning

It's probably that comma on line 21.

And if there is no comma on line 21, perhaps you could post your code as my ESP seems to be acting up this week :)


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

Replies are listed 'Best First'.
Re^2: problem with put function
by kamesh3183 (Beadle) on Oct 12, 2004 at 12:19 UTC
    <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
    thanx
    kamesh
    </body>
      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
      WriteToLogFile($V_CurrentDate,GetTheCurrentTime(),"Error","$V_Ftp->message");
      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;
      }
      thanx
      kamesh

        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