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

Perl脚本:目录的有效性始终返回false,perl,unix,grep,sunos,Perl,Unix,Grep,Sunos,我想使用perl脚本从文件中读取一些参数。 我使用grep命令来查找这些参数的值 #!/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

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

#!/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_LOG\n";


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

else
{
  print "ok";
}
样本输出:

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。 这些目录也已经存在于我的unix系统中
提前感谢您的帮助

您可以使用perl解析而不是shell UTIL

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";
my$file_cnf=$ARGV[0];

打开我的$fh,“mpapec的替代解析比您当前的脚本要好得多。但是,值得一提的是,您最初的问题是backtick操作符的结果在字符串末尾包含换行符

您可以用chomp将其移除,例如:

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

使用所有backtick命令的结果执行此操作。

谁不想使用解析INI格式配置文件的已建立模块?这是家庭作业吗?这些模块不包括在我们的sunOs平台中,rest先生保证这不是家庭作业。在Linux平台上,我使用了配置模块,效果很好。问题在于sunOs tha我没有这些模块,所以我尝试了grep。希望您理解。亲爱的先生,我不能使用任何perl模块。@PravejKhan,上面的示例中没有。
my $DEST_PATH=`grep relogin_logs $file_cnf | cut -d "=" -f2`;
chomp $DESTDIR;