我想使用perl脚本从文件中读取一些参数.我用grep命令查找thoses参数的值.
#!/usr/bin/perl if( scalar @ARGV ==0) { die "Number of argument is zero. Please use: perl\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"; }
我想读的文件是
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. 这些目录已经存在于我的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";