use strict;
use warnings;
use 5.010;
my @arr = qw{ A C D D C D A G F };
my $str = join q{}, @arr;
say for
sort
map { substr $str, $_ }
0 .. length( $str ) - 1;
####
ACDDCDAGF
AGF
CDAGF
CDDCDAGF
DAGF
DCDAGF
DDCDAGF
F
GF
####
use strict;
use warnings;
use 5.010;
my @arr = qw{ a c a a a c a t a t z };
my @sortedIndices =
map { $_->[ 0 ] }
sort { $a->[ 1 ] cmp $b->[ 1 ] }
map { [ $_, join q{}, @arr[ $_ .. $#arr ] ] }
0 .. $#arr;
say join q{}, @arr[ $sortedIndices[ $_ ] .. $#arr ]
for 0 .. $#sortedIndices;
####
aaacatatz
aacatatz
acaaacatatz
acatatz
atatz
atz
caaacatatz
catatz
tatz
tz
z