#!/usr/bin/perl -w
use strict;
use DirHandle;
use File::Basename;
use File::stat;
use Getopt::Long;
my $rcs = '$Id: listfiles.pl,v 1.7 2001/06/16 18:56:23 gilles Exp gilles $ ';
my $debug = 0;
my $myself = $0;
my $date = scalar(localtime());
my $title;
GetOptions(
"debug" => \$debug,
);
my @files;
@files = @ARGV;
$debug and print "FILES:@files\n";
my (%files, @list, %done);
foreach my $file (@files) {
next unless (-f $file);
my($base, $lang, $ext);
my $dirname = dirname($file);
my $basename = basename($file);
my $inode = stat($file);
my $size = int(($inode->size / 1024) + 0.5);
my $size_str = sprintf("%3dk", $size);
unless ($basename =~ /(.*)\.(..)\.(.*)/) {
next;
}
else{
$debug and print "($1, $2, $3, $size, [$size_str])\n";
$files{$file}{'dir'} = $dirname;
$files{$file}{'base'} = $1;
$files{$file}{'lang'} = $2;
$files{$file}{'ext'} = $3;
$files{$file}{'size'} = $size_str;
}
}
foreach my $file (sort keys %files) {
my $dir = $files{$file}{'dir'} ;
my $base = $files{$file}{'base'} ;
my $lang = $files{$file}{'lang'} ;
my $ext = $files{$file}{'ext'};
my $size = $files{$file}{'size'};
push(@list,
"\n$base "
. space(25,$base))
unless exists($done{"$dir\/$base"});
push(@list, "$lang$size ");
$done{"$dir\/$base"}++;
}
print <@list
EOF
sub space {
my $num = shift;
my $string = shift;
my $diff = $num - length($string);
unless ($diff > 0) {
return "";
}else{
return("." x $diff);
}
}