2016-03-25 15 views
-1

Param.txt adlı bir dosyam var mı? Ben perl programı bu dosyayı okuma ve bir karma param4 kadar tüm parametre değerlerini saklamak amDosyayı oku ve çalıştır ve çalıştır.

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

içerir.

Param5, param6, param7, param8'i sadece dosya okunarak ve hashın oluşturulmasıyla amaçlanan işlemi uygulayarak nasıl kaydederim?

cevap

1

Eh basit bir yolu perl kodu ve eval ile regex kullanıyor:

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 [email protected] if [email protected]; 
    } 
} 

say Dumper(\%ns); 
+0

güzel görünüyor, ama olmaz bu örneğin 'eval {param1 + param2}' yerine eval 'ait {$ param1 + $ param2 } '($' s olmadan) – PerlDuck

+0

regex daha önce –

+0

Ah tanımlıyorsa değerlerini kendi değerleriyle değiştirir, şimdi anlıyorum. Daha da güzel. Kodunuz 'eval {param1 + param2}' yerine değil, 'eval {5 + 10}' yerine. Güzel. – PerlDuck