Dear Perl Users,
In the program below, am trying to put many text files into one. The program
creates the directories as desired, moves the files to the directories as per
commands and creates an output file.
But the file created is empty and the error message is indicated as the path
specified is not found. Am not sure exactly which line is not correct.
Help will be appreciated.
Zilore Mumba
#!/usr/bin/perl -w
use strict;
use warnings;
use POSIX;
use File::Path;
use File::Copy;
#
my $debug = 0;
#
my @now = localtime;
my ($day, $mon, $year) = (localtime(time() - 60 * 60 * 24) ) [ 3,4,5];
$year = $year+1900;
$mon = $mon+1;
open(DAT_OUT, ">datefile.txt");
printf DAT_OUT ("%04d%02d%02d\n", $year, $mon,$day);
close OUT;
open(DAT_OUT, "<datefile.txt"); # we write date in a file so that
month is tow-digit
my $dat0=<DAT_OUT>;
chomp $dat0;
close OUT;
my $msg_pref = 'msgs';
my $ext ='.txt';
my $out_file = "$dat0$msg_pref$ext";
my $msg_dir = 'Messages';
if ( ! -d $msg_dir ) { # Create a directory called Messages
print "mkpath $dat0\n" if $debug;
mkpath ($msg_dir ) or die "mkpath '$msg_dir' failed: $! ($^E)";
}
my $cmd01 = "mv msg* $msg_dir"; # Move all messages to directory Messages
print "doing system ($cmd01)\n" if $debug;
system ($cmd01);
chdir ($msg_dir) or die "cd to '$msg_dir' failed: $! ($^E)";
# Change directory to directory Messages
if ( ! -d $dat0 ) {
print "mkpath $dat0\n" if $debug;
mkpath ($dat0) or die "mkpath '$dat0' failed: $! ($^E)";
} # Create a directory called by yesterday's date
# Move all files to date_directory
my $cmd02 = "mv msg* $dat0"; # Move all messages to date directory
print "doing system ($cmd02)\n" if $debug;
system ($cmd02); #But program remains in Messages
# open output file - in dat0 #
#
print "Creating output file '$out_file'\n" if $debug;
open OUT, ">$dat0/$out_file" or die "Create '$out_file: failed $! ($^E)";
my @files =();
opendir DIR, "$dat0" or die "opendir '$dat0' Failed: $! ($^E)";
while (my $file = readdir DIR) {
next if $file =~ m/msg*/;
print "Adding '$file'\n" if $debug;
push(@files,$file);
}
closedir DIR;
#my $cmd03 = "type @files > $out_file"; # for Windows
my $cmd03 = ("/cygdrive/c/progra~1/pcgrads/win32/cat @files > $out_file");
print "doing system ($cmd03)\n" if $debug;
system ($cmd03);
#my $cmd04 = "rm msg*";
#print "doing system ($cmd04)\n" if $debug;
#system ($cmd04);
__END__
#
my $files = dir() or die "Error doing dir: $!\n";
foreach (@$files) {
# skip lines not starting with d or -
if (/^[^d-]/) {
# print "Skipping garbage dir line\n" if $debug;
next;
}
# dir listing
#----0----- -1- ---2---- ---3---- ---4---- -5- -6 --7-- -----8--------
#total 52
#drwx--x--- 3 owner group 1024 Dec 13 1997 .
#drwxr-xr-x 671 owner group 49152 Dec 18 14:09 ..
#-rw-r--r-- 1 xyz httpd 2010 Sep 21 13:31 index.htm
my ($size, $file) = (split /\s+/, $_, 9)[4,8]; # get size/filename
next if $file =~ /^\.{1,2}$/; # skip . and ..
# if directory - call directory recurse routine
if (/^d/) {
...
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs