调试perl脚本 - 变量插值

时间:2011-11-27 23:38:33

标签: perl

尝试调试此脚本。我认为这可能是变量插值的问题?我不确定。 如果我像这样传递值,它可以使用选项:

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

我正在尝试删除传递--file的选项,因为我需要生成日期 动态。

perl test-file-exists.pl

鉴于下面的代码更改(我注释了选项部分)。我正在尝试创建字符串(请参阅$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;
}

1 个答案:

答案 0 :(得分:3)

当您使用反引号或qx时,您会收到包含的结尾换行符,因此chomp关闭:

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

你会得到一个合理的文件名。

你也可以使用DateTime和朋友来避免完全炮轰。