in reply to Re: Sorting through a rollover
in thread Sorting through a rollover

MAN THAT AIN'T RIGHT! How simple, it was staring me in the eyes and I couldn't see the tree for the forest. I was trying to make a mountain out of an ant hill. Thanks a lot, that is the definative answer that requires very little in terms of logic.
THANKS everyone else, but trammell is my HERO today.
Thanks again!

Replies are listed 'Best First'.
Re^3: Sorting through a rollover
by onegative (Scribe) on Feb 11, 2005 at 13:52 UTC
    Well if anyone was interested, this is what I did to correct my issue:
    Orignal Code Snipet
    opendir(CacheDir,$Cache) || die "Couldn't open the directory $Cache: $ +!\n"; @filelist=grep { /[0-9]{5}/ } readdir(CacheDir); closedir(CacheDir); @sortlist=sort {$b <=> $a} @filelist; for ($i=0;$i<$MsgCount;$i++) { $filename=$sortlist[$i]; if ($filename) { open(ITEM,"$Cache/$filename");

    New Code
    opendir(CacheDir,$Cache) || die "Couldn't open the directory $Cache: $ +!\n"; @filelist=grep { /[0-9]{5}/ } readdir(CacheDir); closedir(CacheDir); $z=0; while($filelist[$z]){ if ($filelist[$z] =~ /[0][0][0-1][0-9][0-9]/){ $bigfilelist[$z]=int($filelist[$z]+100000); } else{ $bigfilelist[$z]=$filelist[$z]; } ++$z; } @sortlist=sort {$b <=> $a} @bigfilelist; $i=0; while($sortlist[$i]){ $filename=int($sortlist[$i]); if($filename > 100000){ $filename=int($filename-100000); } else{ $filename=int($filename); } $filename=sprintf("%05d", $filename); ++$i; if ($filename) { open(ITEM,"$Cache/$filename");

    Again I wanted to thank everyone for their input, I still learned a few things that I will use in the future.
    Danny
      OK, I was wrong the first time...
      $flag=""; $flag = grep {/[0][0][0-1][0-9][0-9]/} @filelist; $flag2 = grep {/[9][9][8-9][0-9][0-9]/} @filelist; if ( $flag && $flag2 ){ $FLAG=1; } else{ $FLAG=0; } $z=0; while($filelist[$z]){ if ($FLAG eq 1 ){ if ($filelist[$z] =~ /[0][0][0-1][0-9][0-9]/){ $bigfilelist[$z]=int($filelist[$z]+100000); } else{ $bigfilelist[$z]=$filelist[$z]; } ++$z; } else{ $bigfilelist[$z]=$filelist[$z]; ++$z; } } @sortlist=sort {$b <=> $a} @bigfilelist; $i=0; while($sortlist[$i]){ $filename=int($sortlist[$i]); if($filename > 100000){ $filename=int($filename-100000); } else{ $filename=int($filename); } $filename=sprintf("%05d", $filename); ++$i;

      This is definatley correct, tested, verified. Oh well...Danny