in reply to
Re^2: Pointers needed to tweak a sort
in thread Pointers needed to tweak a sort
By the way, if you wanted only up to one of those conditions to match, then you don't need all this complication with a string of zeros and ones. Just have the key be a single number you just compare with spaceship. Something like this, untested:
...
sub list_sortflags {
my($s) = @_;
my @networks = ...;
my $network_string = ...;
my $k;
if ($s->{user} =~ /LadyAleena_($network_string|TV)/ && $s->{name} !~
+ /TV/)
{ $k = 1; }
elsif ($s->{user} =~ /LadyAleena_($network_string)/ && $s->{name} =~
+ /TV shows$/)
{ $k = 2; }
elsif ($s->{user} eq 'LadyAleena_TV' && $s->{name} eq 'Premium TV sh
+ows')
{ $k = 3; }
elsif ($s->{user} eq 'LadyAleena_TV' && $s->{name} eq 'TV shows')
{ $k = 4; }
...
elsif ($s->{user} eq 'Lady_Aleena' && $s->{name} =~ /(Followers' bus
+inesses|List subscribers)/)
{ $k = 11; }
else
{ $k = 12; }
$$s{sortflag} = $k;
}
...
sub list_compare {
my($a, $b) = @_;
return $$a{sortflag} <=> $$b{sortflag} ||
my_sort($$a{name}, $$b{name}, "article");
}
...