Hello Datz_cozee75,

Here are a few comments.

Here is the modified code. Please note that this code is untested and I did this quickly, so it may need some small adjustments and there may be some typos. Please be sure that you have a backup of your data before running this code.

#!/usr/bin/perl -w use strict; use 5.010; use utf8; use open qw/:std :utf8/; use Path::Tiny; my %vars = ( place => 'Vancouver', book => 'Медитац&# +1080;я на perlем', chapter => 'populated title', print_module => 1, script_file => undef, server_dir => 'perlmonks', image_dir => 'pmimage', ); # This script clones the template directory in $1 to $2. # Some names need munging. # $from is a populated child directory; $to is child dir to be create +d. $pop is the folder with the data. my ( $from, $to, $pop ) = @ARGV; my $ts = "template_stuff"; my $current = Path::Tiny->cwd; #say "current is $current"; say "-------------"; say "making directories"; # define the paths within the target directory: my $abs_to = path( $current, $to, $ts ); $abs_to->mkpath; say "abs to template is $abs_to"; # $from template directory: my $abs_from = path( $current, $from, $ts ); say "string abs from is $abs_from"; say "-------------"; say "copying files"; foreach my $child ( $abs_from->children(qr/\.(txt|pm|css|tmpl|pl|sh)$/ +) { next unless $child->is_file; my $base = $child->basename; #syntax is from to to my $return = path($child)->copy( $abs_to, $base ); if ($base =~ m/\.(pl|sh)$/) { $return->chmod(0755); } say "return is $return"; } say "-------------"; # copy css file to template with munged name foreach my $child ( $abs_from->children ) { my $base = $child->basename; if ( $base =~ m/^$from(\d*)\.css$/ ) { #say "matching is $base"; say "dollar one is $1"; my $munge = $to . "1" . ".css"; say "munge is $munge"; my $name = path( $abs_to, $munge ); say "name is $name"; #syntax is from to to my $return = path( $abs_from, $base )->copy($name); say "return2 is $return"; } } ## munge and copy executable, change permissions say "-------------"; my $d = path( $current, $from ); # @matching will be an array of Path::Tiny objects my @matching = $d->children(qr/$from(\d*)\.pl$/i); @matching = sort @matching; say "matched is @matching"; my $winner = pop @matching; my $newfile = "${to}1.pl"; my $b = path( $current, $to, $newfile ); print "b is $b\n"; # $winner will already be a Path::Tiny object my $return3 = $winner->copy("$b"); say "return3 is $return3"; $return3->chmod(0755); say "end of clone"; my $path = path(qw(master_list 2013 North_America)); # prints 'master_list/2013/North_America'; say $path; # prints 'master_list/2013/North_America' on unix, # 'master_list\2013\North_America' on win32 say $path->canonpath; # prints /home/santa/master_list/2013/North_America when $CWD is /home +/santa say $path->absolute; # prints 'master_list/2013' say $path->parent; # prints 'master_list/2013/North_America/Vancouver/ETHER' say $path->child( 'Vancouver', 'ETHER' ); my $tempdir = Path::Tiny->tempdir('delivery_list_XXXXXX'); my $tempfile = Path::Tiny->tempfile( TEMPLATE => 'delivery_list_XXXXXX', suffix => +'.bin' ); my $scratch_file = $tempdir->child( 'batch_01', 'scratchfile.txt' )->t +ouchpath; chdir $tempdir unless $tempdir->subsumes( Path::Tiny->cwd ); system("pwd &"); my $abs_pop = path( $current, $pop, $ts ); say "string abs pop is $abs_pop"; foreach my $child ( $abs_pop->children ) { next $child->is_dir; say "e is $child"; my $base_dir = $child->basename; say "base dir is $base_dir"; my $folder = path( $current, $to, $ts, $base_dir )->mkpath; say "folder is $folder"; say "string folder is $folder"; my $pop_from = $child; next if( $child =~ m/logs/; foreach $pchild ( $pop_from->children ) { say "default is $pchild\n"; my $base = $pchild->basename; say "base is $base"; my $to_name = path( $folder, $base ); say "to name is $to_name"; my $return4 = path($pchild)->copy($to_name); say "return4 is $return4"; } } my $exec_path = path( $current, $to ); my $return5 = chdir($exec_path); say "return5 is $return5"; system("pwd "); system("ls "); system ("./$newfile ");

In reply to Re^4: shedding a bash wrapper and updating to Path::Tiny by kevbot
in thread shedding a bash wrapper and updating to Path::Tiny by Aldebaran

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.