2011-10-02 61 views
1

脚本工作正常,但FTP代码上传XLS但0字节上传,但如果出现在面前下面的代码片段的FTP密码,FTP做工精细,perl的FTP不工作

什么是错误代码,

my $workbook = Spreadsheet::WriteExcel->new('TestRPT.xls'); my $worksheet = $workbook->add_worksheet('TestRPT Report');

#!/usr/bin/perl 
use strict; 
use warnings; 
use DBI; 
use Spreadsheet::WriteExcel; 
use POSIX qw(strftime); 


my $CurTimeStamp=time; 
my $LastSunTimestamp=($CurTimeStamp - 168*60*60); 
my $row; 
my $PinNumber; 
my $PinAmount; 
my $get_date; 
my $get_time; 
my $get_time_stamp; 
my $DoFTPFlg = "yes"; 


# Create a new workbook and add a worksheet. 
my $workbook = Spreadsheet::WriteExcel->new('TestRPT.xls'); 
my $worksheet = $workbook->add_worksheet('TestRPT Report'); 


# Write some text. in write function First Argument for ROW, Second Argument for COLUMN, Third Argument for Title/Text to display 
$worksheet->write(0, 0, 'val1'); 
$worksheet->write(0, 1, 'val2'); 
$worksheet->write(0, 2, 'val3'); 
$worksheet->write(0, 3, 'val4'); 
my $cnt = 1; 
    $get_time_stamp = time; 
    $get_date = strftime("%m/%d/%y",localtime($get_time_stamp)); 
    $get_time = strftime("%H:%M",localtime($get_time_stamp)); 
    # Write some numbers. 
    $worksheet->write($cnt, 0, "val1");   
    $worksheet->write($cnt, 1, "val2");  
    $worksheet->write($cnt, 2, "val3"); 
    $worksheet->write($cnt, 3, "val4"); 




if ($DoFTPFlg eq "yes") { 
    print "DO FTP"; 
    use Net::FTP; 
    my $ftp; 
    $ftp = Net::FTP->new("mysite.in", Debug => 0); 
    $ftp->login("user",'pass'); 
    $ftp->cwd("/www/"); 
    $ftp->put("TestRPT.xls"); 
    $ftp->quit; 

} 
+0

我的问题修复了,我没有添加$ workbook-> close();在我的ftp代码之前的地方结束 –

回答

3

您应该close$workbook对象试图做的任何文件之前。

documentation

显式关闭()如果该文件必须之前执行它的一些外部作用,例如复制它,读它的大小或它附加到电子邮件被关闭是必需的。

1

尝试稍微修改一下代码。取而代之的

$ftp->put("TestRPT.xls"); 

创建于www目录中的另一个文件,并尝试FTP下载到文件中。如果该文件被称为test.txt,你行更改为:

$ftp->put("TestRPT.xls"); 

因此,在代码中唯一的变化是文件被FTP'd的名称。如果您的FTP工作正常,则问题不在于FTP,而在于Spreadsheet::WriteExcel模块。由于Mat已经声明,你需要在你的对象上做一个明确的close

如果你的FTP不起作用,它可能是FTP呼叫的问题(虽然它对我来说很好)。