in reply to Re^5: make_path for creating directory tree
in thread make_path for creating directory tree

Sorry, one more update. It runs without an error and puts AB0001 in struct1 and BC0001 in struct2 if the number for AB and BC is only from 1 to 1. If I try AB and BC with a bigger number, from 1 to 2, it returns the uninitialized value error and it runs wrong: it puts AB0001 in struct1 and AB0002 in struct2 - ignoring BC completely. Isn't that strange?

I'm referring to this

@molecs = ( dir_tree( 'AB', 6, 1, 1 ), dir_tree( 'BC', 6, 1, 1 ), # dir_tree( 'XZ', 6, 1, 4 ), # dir_tree( 'XY', 6, 1, 4 ), # dir_tree( 'QU', 6, 1, 4 ), # dir_tree( 'QE', 6, 1, 4 ), );

So if I change "from...to" to "1 to 2", it does the above.

Replies are listed 'Best First'.
Re^7: make_path for creating directory tree
by poj (Abbot) on Jan 22, 2016 at 18:26 UTC

    Try this, if OK replace the print statements with make_path

    #!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/$st +eps"; 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; }
    poj