my %vals = ('AND' => '&&', 'OR' => '||', 'XOR' => '^', 'NOT' => '!'); my $logic; while ($logic = ) { chomp($logic); while() { chomp; last if (!$_); split(/ = /); $vals{@_[0]} = @_[1]; } print "$logic\n"; $logic =~ s/(\w+)/$vals{$1}/g; print "$logic\n"; print eval($logic) . "\n\n"; } __DATA__ a0 OR d1 AND d0 a0 = 1 d1 = 0 d0 = 1 d1 AND e1 AND f0 e1 = 1 f0 = 0