2011-10-02 38 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呼叫的問題(雖然它對我來說很好)。