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 ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs