$_ = "11100"; do { print "$_\n"; } while ( s/(.*)10(0*)(1*)/${1}01$3$2/ ); 11100 11010 11001 10110 10101 10011 01110 01101 01011 00111