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";
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";
closedir(CacheDir);
\$z=0;
while(\$filelist[\$z]){
if (\$filelist[\$z] =~ /[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-1][0-9][0-9]/} @filelist;
\$flag2 = grep {/[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-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;