#!/usr/bin/perl -w #Close down gaim, then run this: # ./gaimsort ~/.gaim/SCREENNAME* # Run gaim, and you're done.. yaaay open(LIST,$ARGV[0]); my (%conf,$group,@buddies); my $data; while () { next if m/^$/; $data .= $_ if (m/^m/); if (m/^g (.*)/) { if (defined($group)) { @buddies = sort {uc($a) cmp uc($b)} @buddies; my @tmp = @buddies; $conf{$group} = \@tmp; undef $group; undef @buddies; } $group = $1; print "Group: $group\n"; } if (m/^d (.*)$/) { $block .= $_; } if (m/^b (.*)/) { push(@buddies,$1); } } @buddies = sort {uc($a) cmp uc($b)} @buddies; $conf{$group} = \@buddies; system("cp $ARGV[0] $ARGV[0].backup"); open(BUDDYLIST,"> $ARGV[0]"); print "Rebuilding file...\n"; print "---------------------\n"; print BUDDYLIST "$data"; foreach (keys(%conf)) { print BUDDYLIST "g $_\n"; #print "Ref: " . @{$conf{$_}}."\n";; foreach (@{$conf{$_}}) { print BUDDYLIST "b $_\n"; } } print BUDDYLIST "$block"; print BUDDYLIST "\n";