#!/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); } }