$ ./3.archive.pl path1 is /home/bob/1.scripts/pages/1.qy parent1 is /home/bob/1.scripts/pages files are 2.create.bash 11.clone.pl 1.initialize.pl 1.manifest 1.med 1.meditation 1.pop 1.qy 1.rings 2.med 5.create.sh 5.unicode grand dir is /home/bob/Documents/html_template_data path 3 is /home/bob/1.scripts/pages/2.create.bash path 4 is /home/bob/Documents/html_template_data/2.create.bash copy failed for /home/bob/1.scripts/pages/2.create.bash to /home/bob/Documents/html_template_data/2.create.bash : No such file or directory at template_stuff/utils2.pm line 129. $ $ cat utils2.pm package utils2; require Exporter; use utils1; our @ISA = qw(Exporter); our @EXPORT = qw( archive1 archive2 archive3); sub archive1 { use warnings; use 5.011; use Path::Tiny; my $path1 = Path::Tiny->cwd; say "path1 is $path1"; my $parent1 = $path1->parent(); say "parent2 is $parent1"; my $file1 = "1.manifest"; my $from = path( $parent1, $file1 ); my @files = $from->lines_utf8; say "files are @files"; my $tempdir = Path::Tiny->tempdir('backup_XXXXXX'); say "temp dir is $tempdir"; my $readme = $tempdir->child( 'grandfather', 'README.txt' )->touchpath; say "read me is $readme"; my $grand_dir = $readme->parent; chdir $grand_dir; foreach my $file (@files) { #syntax is from -> to my $return = path( $parent1, $file )->copy( $grand_dir, $file ); if ( $file =~ m/\.(pl|sh)$/ ) { $return->chmod(0755); } say "return is $return"; } system("cd $grand_dir"); system("ls -l"); my $b = "dummy"; return $b; } sub archive2 { use warnings; use 5.011; use Path::Tiny; use Data::Dumper; my $path1 = Path::Tiny->cwd; say "path1 is $path1"; my $parent1 = $path1->parent(); say "parent1 is $parent1"; my $file1 = "1.manifest"; my $from = path( $parent1, $file1 ); my @files = $from->lines_utf8; say "files are @files"; my $grand_dir = "/home/bob/Documents/html_template_data"; say "grand dir is $grand_dir"; foreach my $file (@files) { #syntax is from -> to my $path3 = path($parent1, $file); my $return6 = chdir $parent1 or warn "why is this not here?"; say Dumper $return6; say "-----from"; system("pwd"); system("ls"); say "path 3 is $path3"; my $return5 = chdir $grand_dir or warn "why is this not here?"; say Dumper $return5; say "-----to"; system("pwd"); system("ls"); my $path4 = path($grand_dir, $file ); say "path 4 is $path4"; my $return = path( $path3 )->copy( $path4); say Dumper $return; if ( $file =~ m/\.(pl|sh)$/ ) { $return->chmod(0755); } say "return is $return"; } system("cd $grand_dir"); system("ls -l"); my $b = "dummy"; return $b; } sub archive3 { use warnings; use 5.011; use Path::Tiny; use Data::Dumper; my $path1 = Path::Tiny->cwd; say "path1 is $path1"; my $parent1 = $path1->parent(); say "parent1 is $parent1"; my $file1 = "1.manifest"; my $from = path( $parent1, $file1 ); my @files = $from->lines_utf8; say "files are @files"; my $grand_dir = "/home/bob/Documents/html_template_data"; say "grand dir is $grand_dir"; #system ("cd $parent1\/"); # system ("pwd"); foreach my $file (@files) { #syntax is from -> to my $path3 = path($parent1, $file); say "path 3 is $path3"; #my $path5 = path($path3)->assert( sub { $path3->exists } ); #say "path 5 is $path5"; my $path4 = path($grand_dir, $file ); say "path 4 is $path4"; my $return = path( $path3 )->copy( $path4); say Dumper $return; if ( $file =~ m/\.(pl|sh)$/ ) { $return->chmod(0755); } } my $b = "dummy"; return $b; } 1; $