dir2list.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:30 2010 from dir2list.pl 2010/01/06 3.2 KB.

#!/Perl
# dir2list.pl
# AIM: Given a 'directory' file input, output a list ...
require "logfile.pl" or die "Unable to load logfile.pl ...\n";
my ($LF);
my $outfile = 'temp.'.$0.'.txt';
if ($0 =~ /^\w{1}:\\.*/) {
   my @tmpsp = split(/\\/,$0);
   $outfile = 'temp.'.($tmpsp[-1]).'.txt';
}
open_log($outfile);
$in_file = shift || "tempdir";
prt( "Processing $in_file ... " );
open IF, "<$in_file" or mydie( "Can not OPEN [$in_file] ... $1 ...\n" );
@in_lines = <IF>;
close IF;
prt( " ".scalar @in_lines." lines ..." );
$gottot = 0;
$line = '02/09/2004  05:13 PM            10,104 Multipad.mak';
##if ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+([\d,]+)\s+(\w+.*)/) {
##   print "ok\n";
##} else {
##   print "FAILED\n";
##}
@list = ();
@lastlns = ();
foreach $line (@in_lines) {
   ###prt( $line );
   chomp $line;
   $line =~ s/\r$//;
   # like 'Directory of F:\GTools\ASM\e'
   if ($gottot) {
      ###prt( "$line\n" );
      push(@lastlns, $line) if (length($line));
      $gottot = 0;
   } else {
      if ($line =~ /\s+Directory of (.*)/) {
         $dir = $1;
         ##prt( "$dir\n" );
      # like '02/09/2004  05:10 PM             4,301 FindI32.mak'
      ##} elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4}).*/) {
      ##} elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+(\d{1}(\d+|,+))\s+(\w+.*)/) {
      ##} elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+(\d+)\s+(\w+.*)/) {
      ##} elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+(\d{1,}(\d|,)+)\s+(\w+.*)/) {
      ##} elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+(\d{1,}\d+|,+)\s+(\w+.*)/) {
      } elsif ($line =~ /^(\d{2}\/\d{2}\/\d{4})\s+(\d{2}:\d{2})\s+(\w{2})\s+([\d,]+)\s+(\w+.*)/) {
         $date = $1;
         $time = $2;
         $ampm = $3;
         $size = $4;
         $name = $5;
         ($dy,$mt,$yr) = split('/',$date);
         ($hr,$mn) = split(':',$time);
         if ($ampm eq 'PM') {
            $hr += 12;
         }
         $tm = $yr * 365 * 24 * 60;
         $tm += $mt * 30 * 24 * 60;
         $tm += $dy * 24 * 60;
         $tm += $mn * 60;
         ###prt( "[$date] [$time] [$ampm] [$size] [$name] [$dir]\n" );
         ###prt( "[$dy/$mt/$yr] [$time] [$ampm] [$size] [$name] [$dir]\n" );
         ###prt( "$tm [$dy/$mt/$yr] [$hr:$mn] [$ampm] [$size] [$name] [$dir]\n" );
         push(@list, [$tm, $date, $time, $ampm, $size, $name, $dir]);
      #      Total Files Listed:
      } elsif ($line =~ /^\s+Total Files Listed:/) {
         $gottot = 1;
      }
   }
}
$cnt = scalar @list;
prt( "got $cnt files ...\n" );
$minlen = 0;
@slist = sort mycmp_decend @list;
for ($i = 0; $i < $cnt; $i++ ) {
   $name = $slist[$i][5];
   $len = length($name);
   $minlen = $len if ($len > $minlen);
}
for ($i = 0; $i < $cnt; $i++ ) {
   $date = $slist[$i][1];
   $time = $slist[$i][2];
   $ampm = $slist[$i][3];
   $size = $slist[$i][4];
   $name = $slist[$i][5];
   $dir  = $slist[$i][6];
   while (length($size) < 12) {
      $size = ' '.$size;
   }
   while (length($name) < $minlen) {
      $name .= ' ';
   }
   prt( "$date $time $ampm $size $name $dir\n" );
}
$cnt = scalar @lastlns;
for ($i = 0; $i < $cnt; $i++) {
   prt( $lastlns[$i]."\n" );
}
close_log($outfile,1);
unlink $outfile;
exit(0);
sub mycmp_decend {
   $off = 0;
   if (${$a}[$off] < ${$b}[$off]) {
      return 1;
   }
   if (${$a}[$off] > ${$b}[$off]) {
      return -1;
   }
   return 0;
}

index -|- top

checked by tidy  Valid HTML 4.01 Transitional