State 1: y,ys,sy,,s,ys,sy, State 2: s,sy,sy,,y,sy,ys, State 3: y,ys,ys,,s,ys,sy, State 4: y,sy,ys,,s,ys,sy, State 2: s,sy,sy,,y,sy,ys, ... #### State 1: y,sy,ys,,s,ys,sy, State 2: s,sy,sy,,y,sy,ys, State 3: y,ys,ys,,s,ys,sy, State 1: y,sy,ys,,s,ys,sy, ... #### use strict; use warnings; local $_ = 'y,ys,sy,,s,ys,sy,'; my %h; my $i; for my $n (1 .. $ARGV[0] || 12) { $h{$_} ||= ++$i; print("State $h{$_}: $_\n"); eval; } #### State 1: y/123/231/ State 2: y/231/312/ State 3: y/312/123/ State 1: y/123/231/ ... #### State 1: y/123i/231/ State 2: y/2311/312/ State 3: y/3122/123/ State 4: y/1233/231/ State 2: y/2311/312/