my $die = entangle( 1=>1, 1=>2, 1=>3, 1=>4, 1=>5, 1=>6 ); my $save_state = $die->save_state; for (1..5) { print "$die "; $die = $save_state->restore_state; } # print: "2 1 3 2 5" or whatever #### #!/usr/bin/perl -w use Quantum::Entanglement; my $die = entangle( 1=>1, 1=>2, 1=>3, 1=>4, 1=>5, 1=>6 ); print "Pre-observation: ".$die->show_states; print "Observation: $die\n"; print "Post-observation: ".$die->show_states; # print: # # Pre-observation: 1|1> 1|2> 1|3> 1|4> 1|5> 1|6> # Observation: 3 # Post-observation: 1|3> #### #!/usr/bin/perl -w use strict; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - use Aspect qw(advice calls returns around) ; my $aspect = advice( calls(qr/^(Quantum|main)::(.*)/), sub { printf "calling -> %s\n", $::thisjp->sub } ); $aspect->enable; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - use Quantum::Entanglement; sub foo { my $die = entangle( 1=>1, 1=>2, 1=>3, 1=>4, 1=>5, 1=>6 ); print $die ; print "\n" ; } foo(); # print: # # calling -> main::foo # calling -> main::entangle # calling -> Quantum::Entanglement::_new # calling -> Quantum::Entanglement::("" # calling -> Quantum::Entanglement::_normalise # 5 # calling -> Quantum::Entanglement::DESTROY # calling -> Quantum::Entanglement::_rationalise_states # calling -> Quantum::Entanglement::_unravel # foo(); #### # set all non retained states to zero probability, leave others alone