At 01:55 PM 8/6/01 -0400, Yacketta, Ronald wrote:
>Folks,
>
>I have this butt ugly little perl code here,

Your honesty is refreshing :-)

>would like some ideas on really
>streamlining it and cleaning it up.
>
>opendir DIR1, "../logs/set1" or die "Can't open ../logs/set1: $!";
>opendir DIR2, "../logs/set2" or die "Can't open ../logs/set2: $!";
>opendir DIR3, "../logs/set3" or die "Can't open ../logs/set3: $!";
>opendir DIR4, "../logs/set4" or die "Can't open ../logs/set4: $!";
>opendir DIR5, "../logs/set5" or die "Can't open ../logs/set5: $!";
>opendir DIR6, "../logs/set6" or die "Can't open ../logs/set6: $!";
>
>@Files1 = readdir DIR1;
>@Files2 = readdir DIR2;
>@Files3 = readdir DIR3;
>@Files4 = readdir DIR4;
>@Files5 = readdir DIR5;
>@Files6 = readdir DIR6;
>
>closedir DIR1;
>closedir DIR2;
>closedir DIR3;
>closedir DIR4;
>closedir DIR5;
>closedir DIR6;
>
>foreach (@Files1) {
>         push(@logFiles1,"../logs/set1" . $_);
>}
>foreach (@Files2) {
>         push(@logFiles2,"../logs/set2" . $_);
>}
>foreach (@Files3) {
>         push(@logFiles3,"../logs/set3" . $_);
>}
>foreach (@Files4) {
>         push(@logFiles4,"../logs/set4" . $_);
>}
>foreach (@Files5) {
>         push(@logFiles5,"../logs/set5" . $_);
>}
>foreach (@Files6) {
>         push(@logFiles6,"../logs/set6" . $_);
>}

This may seem a little obvious, but...

my %logFiles;
for my $key (1 .. 6) {
   opendir DIR, "../logs/set$key" or die "opendir ../logs/set$key: $!\n";
   push @{$logFiles{$key}}, map "../logs/set$key/$_",
                            grep !/^\.\.?$/, sort readdir DIR;
   closedir DIR;
}

Now the filenames are in arrays which are referenced from the values of the 
hash %logFiles (keys are 1 through 6, but maybe you want to use the 
directory name instead).  I took the liberty of removing the usually 
useless directory entries and sorting, since you'll probably want them 
sorted later.
--
Peter Scott
Pacific Systems Design Technologies
http://www.perldebugged.com


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to