2011-11-27 60 views
1

嘗試調試此腳本。我認爲這可能是一個可變插值的問題?我不確定。 它可以使用的選擇,如果我傳遞的價值觀,像這樣:調試perl腳本 - 變量插值

perl test-file-exists.pl --file /proj/Output/20111126/_GOOD

我試圖刪除傳入--file的選擇,因爲我需要生成日期 動態。

perl test-file-exists.pl

下面給出的代碼的變化(I註釋的選項片)。我正在嘗試創建字符串(請參見$chkfil)。我收到$dt4錯誤。不知何故,它不傳入我創建的文件字符串到其他模塊。

use strict; 
use warnings; 
use lib '/home/test/lib'; 
use ProxyCmd; 
use Getopt::Long; 

# 
### Set up for Getopt 
# 
#my $chkfil; 
#my $help; 

#usage() if (@ARGV < 1 or      
#   ! GetOptions('help|?' => \$help, 
#      'file=s' => \$chkfil) 
#  or defined $help); 

my $cmd = ProxyCmd->new(User=>"test_acct", 
        AuthToken=>"YToken", 
        loginServer=>"host.com"); 

# Get previous day 
my $dt4 = qx {date --date='-1day' +'%Y%m%d'}; 

# Check file 
my $chkfil = qq{/proj/Output/$dt4/_GOOD}; 

# Now test the fileExists function 
print "Checking 'fileExists':\n"; 
my $feResults = $cmd->fileExists("$chkfil"); 

if ($feResults == 0) { 
    print "File Exists!\n"; 
    } else { 
     print "File Does Not Exist\n"; 
} 

sub usage 
{ 
    print "Unknown option: @_\n" if (@_); 
    print "usage: program [--file /proj/Output/20111126/_GOOD] [--help|-?]\n"; 
    exit; 
} 

回答

3

當你使用反引號qx,你會得到包括尾隨換行符所以chomp其關閉:

my $dt4 = qx {date --date='-1day' +'%Y%m%d'}; 
chomp $dt4; 

,你會得到一個合理的文件名。

您也可以使用DateTime和朋友,以避免完全脫殼。

+0

完美。謝謝。 – jdamae