#!/usr/bin/perl # http://perlmonks.org/?node_id=1128230 use strict; $_ = '00111'; 1 while print("$_\n"), s/.*\K01(.*)/10 . reverse $1/e; #### 00111 01011 01101 01110 10011 10101 10110 11001 11010 11100