SPUG: Interesting sort issue
Parr, Ryan
Ryan.Parr at wwireless.com
Tue Oct 23 22:28:38 CDT 2001
I have spoken too soon. It seems that the sort routine was reverse
alphabetizing the directories, but properly alphabetizing files. This in
itself is weird, but was easily fixed:
if(-d $a && -d $b) {
return $b_title cmp $a_title;
}
else {
return $a_title cmp $b_title;
}
This code works, even when there's mixed directories and files. I do
still consider this strange.
-- Ryan
-----Original Message-----
From: Parr, Ryan
Sent: Tuesday, October 23, 2001 9:09 PM
To: spug-list at pm.org
Subject: Interesting sort issue
For the current implementation of my department's website, I've made a
module (FileAPI) that allows me to utilise pages as data sources easily.
I've also got an SSI CGI script that dynamically builds the drop-down menu
and directory listings according to the directory structure which is
determined using File::Find. The problem I'm running into is that sorting is
very quirky.
The following code:
...
sub preprocess { # File::Find passes the directory listing to
&preprocess if defined
# before doing anything with it, specifically for
sorting or excluding
# directory entries
return sort sorter @_;
}
sub sorter {
my $a_title = lc(FileAPI->new($a)->getTitle());
my $b_title = lc(FileAPI->new($b)->getTitle());
$a_title cmp $b_title;
}
...
does alternating alphabetizing. For instance:
C Directory
A Sub-Directory
B Sub-Directory
C Sub-Directory
B Directory
A Sub-Directory
B Sub-Directory
C Sub-Directory
A Directory
A Sub-Directory
B Sub-Directory
C Sub-Directory
and so on...
I consider this behavior to be bizarre. Any thoughts?
-- Ryan Parr
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://zipcon.net/spug/
More information about the spug-list
mailing list