Re: Getting keys of mappe @list = qw/foo bar foo baz/;d hash?

2001-01-04 Thread Piers Cawley

Tony Bowden [EMAIL PROTECTED] writes:

 On Wed, Jan 03, 2001 at 11:16:06AM +, Piers Cawley wrote:
   How can I do this:
 my @list = qw/foo bar foo baz/;
 my %hash = map { $_ = 1 } @men;
 my @sort = sort keys %hash;
 print "We have @sort\n"; # foo bar baz
   without the %hash?
 
  my $last;
  do {print $_ unless $_ eq $last; $last = $_} for sort @list
  Dunno if it's quicker than the cunning tricks with map, but hey, it
  works. 
 
 Ah, but my question was badly phrased. I needed to end up with @sort, not
 a printed list ... 

Ah:

do {push(@sorted, $_) unless $_ eq $last; $last = $_} for sort @list;

Can't be bothered to benchmark it...

-- 
Piers




Re: Getting keys of mappe @list = qw/foo bar foo baz/;d hash?

2001-01-04 Thread Shevek

On 4 Jan 2001, Piers Cawley wrote:

 Tony Bowden [EMAIL PROTECTED] writes:
 
  On Wed, Jan 03, 2001 at 11:16:06AM +, Piers Cawley wrote:
How can I do this:
  my @list = qw/foo bar foo baz/;
  my %hash = map { $_ = 1 } @men;
  my @sort = sort keys %hash;
  print "We have @sort\n"; # foo bar baz
without the %hash?
  
   my $last;
   do {print $_ unless $_ eq $last; $last = $_} for sort @list
   Dunno if it's quicker than the cunning tricks with map, but hey, it
   works. 
  
  Ah, but my question was badly phrased. I needed to end up with @sort, not
  a printed list ... 
 
 Ah:
 
 do {push(@sorted, $_) unless $_ eq $last; $last = $_} for sort @list;
 
 Can't be bothered to benchmark it...

This would be very slow for the dutch national flag, as it sorts the large
list rather than the small one.

S.

--
Shevek
I am the Borg.
sub AUTOLOAD { ($s=$AUTOLOAD)=~s/.*:://; eval qq{ *$AUTOLOAD=$s
?sub {$s*{$s-1}} :sub {1}; }; goto $AUTOLOAD; } print {'4'}; 




Re: Getting keys of mappe @list = qw/foo bar foo baz/;d hash?

2001-01-04 Thread Piers Cawley

Shevek [EMAIL PROTECTED] writes:

 On 4 Jan 2001, Piers Cawley wrote:
 
  Tony Bowden [EMAIL PROTECTED] writes:
  
   On Wed, Jan 03, 2001 at 11:16:06AM +, Piers Cawley wrote:
 How can I do this:
   my @list = qw/foo bar foo baz/;
   my %hash = map { $_ = 1 } @men;
   my @sort = sort keys %hash;
   print "We have @sort\n"; # foo bar baz
 without the %hash?
   
my $last;
do {print $_ unless $_ eq $last; $last = $_} for sort @list
Dunno if it's quicker than the cunning tricks with map, but hey, it
works. 
   
   Ah, but my question was badly phrased. I needed to end up with @sort, not
   a printed list ... 
  
  Ah:
  
  do {push(@sorted, $_) unless $_ eq $last; $last = $_} for sort @list;
  
  Can't be bothered to benchmark it...
 
 This would be very slow for the dutch national flag, as it sorts the large
 list rather than the small one.

Point. It's all data dependent isn't it?

-- 
Piers




Re: Getting keys of mappe @list = qw/foo bar foo baz/;d hash?

2001-01-03 Thread Piers Cawley

Tony Bowden [EMAIL PROTECTED] writes:

 OK, my brain has fried. 
 
 How can I do this:
 
   my @list = qw/foo bar foo baz/;
   my %hash = map { $_ = 1 } @men;
   my @sort = sort keys %hash;
   print "We have @sort\n"; # foo bar baz
 
 without the %hash?
 
 i.e. something akin to: my @sort = sort keys map { $_ = 1 } @list;
 
 I've tried so many variations that my brain is refusing to tell me the 
 correct answer.

my $last;
do {print $_ unless $_ eq $last; $last = $_} for sort @list

Dunno if it's quicker than the cunning tricks with map, but hey, it
works. 

-- 
Piers




Re: Getting keys of mappe @list = qw/foo bar foo baz/;d hash?

2001-01-03 Thread Tony Bowden

On Wed, Jan 03, 2001 at 11:16:06AM +, Piers Cawley wrote:
  How can I do this:
my @list = qw/foo bar foo baz/;
my %hash = map { $_ = 1 } @men;
my @sort = sort keys %hash;
print "We have @sort\n"; # foo bar baz
  without the %hash?

 my $last;
 do {print $_ unless $_ eq $last; $last = $_} for sort @list
 Dunno if it's quicker than the cunning tricks with map, but hey, it
 works. 

Ah, but my question was badly phrased. I needed to end up with @sort, not
a printed list ... 

The result of this was heading towards another couple of maps ;)

I had found the solution long before this turned up though (stupidly
forgot to update my .muttrc for the new list address, so I had to go
through moderation again ...) - just a matter of doubling those curly
brackets (no need for all those +s etc...)

Thanks,

Tony
-- 
-
 Tony Bowden | Belfast, NI | [EMAIL PROTECTED] | www.tmtm.com | www.blackstar.co.uk
  you move in waves like the midnight blues you vector of this weird dis-ease
-