perl脚本:目录的有效性始终返回false



我想使用perl脚本从文件中读取一些参数。我使用grep命令查找thoses参数的值。

#!/usr/bin/perl
if( scalar @ARGV ==0)
{
  die "Number of argument is zero. Please use: perl <script_name> <cdc68.ini> n";
}

if( !-f $ARGV[0])     ## if the 1st arg is not a file
{
   die "$ARGV[0] is not a valid file type nInput Arguments not correct!!! n";
}
my $file_cnf=$ARGV[0];
my $DEST_PATH=`grep relogin_logs $file_cnf | cut -d "=" -f2`;
my $SRC_PATH=`grep dump_logs $file_cnf | cut -d "=" -f2`;
my $FINAL_LOG=`grep final_log $file_cnf | cut -d "=" -f2`;
print "n$DEST_PATH n $SRC_PATH n $FINAL_LOGn";

if ( !-d $DEST_PATH)
{
  die "$DEST_PATH is not a dir";
}
else
{
  print "ok";
}

我想阅读的文件是

cat cdc68.ini
reconn_interval=15
relogin_logs=/osp/local/home/linus/pravej/perlD/temp/relogin/
dump_logs=/osp/local/home/linus/pravej/perlD/temp/
final_log=/osp/local/home/linus/pravej/perlD/final_log/
Number_days=11

样本输出:

perl readconfig.pl cdc68.ini
/osp/local/home/linus/pravej/perlD/temp/relogin/
/osp/local/home/linus/pravej/perlD/temp/
/osp/local/home/linus/pravej/perlD/temp/relogin/
is not a dir at readconfig.pl line 26.

有人可以建议我在这里做错什么吗?请注意,我不想使用任何perl模块,例如config或tiny.pm。这些dir也已经存在于我的unix系统中预先感谢您的帮助

您可以使用perl解析代替shell utils

my $file_cnf = $ARGV[0];
open my $fh, "<", $file_cnf or die $!;
my %ini = map /(.+?)=(.+)/, <$fh>;
close $fh;
print "n$ini{relogin_logs} n $ini{dump_logs} n $ini{final_log}n";

MPAPEC的替代解析要比您当前的脚本好得多。但是,就其价值而言,您最初的问题是Backtick运算符的结果包括字符串末端的Newline字符。

您可以用碎片将其删除,例如:

my $DEST_PATH=`grep relogin_logs $file_cnf | cut -d "=" -f2`;
chomp $DESTDIR;

以所有Backtick命令的结果进行此操作。

相关内容

  • 没有找到相关文章

最新更新