http://qs321.pair.com?node_id=1114774


in reply to Re: How can I access object data in a user defined sort cmp function?
in thread How can I access object data in a user defined sort cmp function?

You misunderstand my question. Here $self is a proper object, blessed. It seemed not too enlightening to list the new function of the object ( it is well known how to do it ). However here it is in full detail:
Package MyObject; sub new { my $self={ hash_ref=>{key1=>'value1',key2=>'value2'} }; bless $self; return $self; } #global variable to access $self my $sort_self; sub byvalue { $sort_self->{hash_ref}->{$a}<=>$sort_self->{hash_ref}->{$b}; } sub sort_hash_ref_keys_by_value { my $self=shift; #set global variable by hand $sort_self=$self; #now the cmp function knows the object my @keys_sorted_by_value=sort byvalue keys(%{$self->{hash_ref}}); } Packahe Main; my $myobject=new MyObject; $myobject->sort_hash_ref_keys_by_value;
I want more than simply sorting the keys. Based on the keys I have to look up something within the object based on which I can sort the keys. For this I have to access the object's variables. Currently I create a global variable called $sort_self and I set this manually before calling the user defined cmp function byvalue, but this seems very unelegant.