%actor = ( merlyn=>1, kudra=>1, ovid=>1, badguy=>1 ); %thing = ( gold=>50, pocketLint=>0.01, cheapWhiskey=>-20, dominationFund=>10E10 ); $actor{merlyn}{owns} = {gold=>1}; $actor{kudra}{owns} = {dominationFund=>1}; $actor{ovid}{owns} = {pocketLint=>1, cheapWhiskey=>1}; #### $x = any($actor); $y = any($thing); &rich($x) if (&owns($x,$y) and &isvaluable($y)); #### if ($x{owns}{$y} && $thing{$y}{value}>20) { print "The badguy will steal $x\'s $y.\n"; } if ($item{value} > 20) { print "The badguy will steal from $potentialvictim\n"; } if ( $(any(@{$x->{owns}})){value} > 20) { print "badguy will steal from $x\n"; } $isvaluable = sub ($) { my $x=shift; $x->{value} > 20 ? 0 : 1; }; #### $x = wave(keys %actor); $y = wave(keys %thing); $item = wave($actor{$x}{owns}->{$y}); #### sub wave { # given an array, return entanglement of elements my @k = @_; my $n; foreach (@k) { push(@n,(1,$_)); } # every element is 100% probable return entangle @n; }