sub start_magick { use strict; use warnings; use 5.010; printf "%s -> %s\n", $_, next_file($_) for qw/a.png z.jpg az.png zaz.png ott.jpg zzz.tiff oi.png abc.jpg/; } sub next_file { use strict; use warnings; use 5.010; my ($previous) = @_; my ( $name, $ext ) = $previous =~ /(.*)\.(.*)/; if ( $name !~ tr/ilo/jmp/ ) { $name = reverse $name; say "reverse is $name"; for my $chIdx ( 0 .. length($name) - 1 ) { say "chIdx is $chIdx"; substr( $name, $chIdx, 1 ) =~ tr/abcdefghjkmnpqrstuvwxy/bcdefghjkmnpqrstuvwxyz/ and last; substr( $name, $chIdx, 1 ) = 'a'; } $name = reverse $name; $name = 'a' x ( 1 + length $name ) if $name =~ /^a+$/; } return "$name.$ext"; }