#!perl use strict; use warnings; use File::Path qw(make_path); # Parent structure directory. my @structs = ( dir_tree( 'struct', 7, 1, 2), ); # Subfolder molecule directory. my @molecs = ( [dir_tree( 'AB', 6, 1, 3 )], # note [] [dir_tree( 'BC', 6, 1, 3 )], ); # Subfolder steps directory. my @steps = dir_tree( 'S', 6, 1, 2 ); for my $structs (@structs) { #mkdir "/media/RAIDstorage/home/results/$structs"; print "/media/RAIDstorage/home/results/$structs"; print "\n"; my $ar = shift @molecs; for my $molecs (@$ar) { for my $steps (@steps) { #make_path "/media/RAIDstorage/home/results/$structs/$molecs/$steps"; print "/media/RAIDstorage/home/results/$structs/$molecs/$steps"; print "\n"; } } } # Define subroutine here. sub dir_tree { my ( $name, $total_length, $from, $to ) = @_; my $length = $total_length - length($name); my $format = "${name}%0${length}d"; return map sprintf( $format, $_ ), $from .. $to; }