读取文件并应用操作并存储它

时间:2016-03-25 02:22:40

标签: regex perl hash

假设我有一个名为param.txt的文件。它包含,

param1 = 5;
param2 = 10;
param3 = 12;
param4 = 5;
param5 = param1 + param2;
param6 = param2 * param1;
param7 = param5 - param2;
param8 = param1 * param2 - param4;

我在perl脚本中读取此文件并将所有参数值存储到散列中的param4。

如何通过读取文件并构建哈希来应用预期的操作来存储param5,param6,param7,param8?

1 个答案:

答案 0 :(得分:1)

简单的方法是使用带有perl代码和eval的正则表达式:

use strict;
use warnings;
use v5.10;
use Data::Dumper;

my %ns = ();

while( my $line = <> )
{
    chomp($line);
    next unless ($line);

    my ($term, $expr) = split m/\s*=\s*/, $line;

    if( $term && $expr )
    {
        $expr =~ s/(\w+)/exists $ns{$1} ? $ns{$1}: $1/ge;
        $ns{$term} = eval $expr;
        warn $@ if $@;
    }
}

say Dumper(\%ns);