Re: Tie::Hash::Cannabinol

2001-06-06 Thread Simon Wistow

Cross David - dcross wrote:
 
   return $self-{$keys[rand $#keys]};

Shouldn't this just gradually start to forget more and more things using
Tie::Hash::Decay?

And then start consuming your resources when it gets the munchies?

Or chuck a whitey and start spewing out spurious data everywhere or ...

I'll get me coat.


-- 
simon wistowwireless systems coder
i think, i said i think this is our fault.



RE: Tie::Hash::Cannabinol

2001-06-06 Thread Richard Clyne

I always thought that a data structure that mimicked a bus queue would
be useful.

If you request more items than are in the queue (e.g. lots of empty
seats) the queue returns the items in order.  If you request less items
than are in the queue (Bus almost full) the largest items push through
and are selected.

Richard

 -Original Message-
 From: Simon Wistow [SMTP:[EMAIL PROTECTED]]
 Sent: 06 June 2001 11:11
 To:   [EMAIL PROTECTED]
 Subject:  Re: Tie::Hash::Cannabinol
 
 Cross David - dcross wrote:
  
return $self-{$keys[rand $#keys]};
 
 Shouldn't this just gradually start to forget more and more things
 using
 Tie::Hash::Decay?
 
 And then start consuming your resources when it gets the munchies?
 
 Or chuck a whitey and start spewing out spurious data everywhere or
 ...
 
 I'll get me coat.
 
 
 -- 
 simon wistowwireless systems coder
 i think, i said i think this is our fault.



Re: Tie::Hash::Cannabinol

2001-06-06 Thread Robin Szemeti

On Wed, 06 Jun 2001, Simon Wistow wrote:
 Cross David - dcross wrote:
  
return $self-{$keys[rand $#keys]};
 
 Shouldn't this just gradually start to forget more and more things using
 Tie::Hash::Decay?

no .. if the program is left alone for a while it begins attaching really
carefully constructed little data structures to each element of the hash,
and then filling little arrays of data structures with really small
patterns ...

-- 
Robin Szemeti   

Redpoint Consulting Limited
Real Solutions For A Virtual World 



Re: Tie::Hash::Cannabinol

2001-06-06 Thread Greg McCarroll

* Richard Clyne ([EMAIL PROTECTED]) wrote:
 I always thought that a data structure that mimicked a bus queue would
 be useful.
 
 If you request more items than are in the queue (e.g. lots of empty
 seats) the queue returns the items in order.  If you request less items
 than are in the queue (Bus almost full) the largest items push through
 and are selected.

Fun!

the following should do what you want, although i'm not sure if freezing
non-references is fair on them and i'm sure the sort condition syntax
can be shortened by the perl golfers on the list ...

package BusQueue;

use strict;
use Storable qw(freeze);

sub new {
my $class = shift;
my $self  = [];
return bless $self, $class;
}

sub insert {
my $self = shift;
push(@$self, @_);
}

sub remove {
my $self = shift;
my ($num) = @_;
@$self = sort {
my $sa;
my $sb;
if (ref($a)) {
$sa = length(freeze($a));
} else {
$sa = length(freeze(\$a));
}
if (ref($b)) {
$sb = length(freeze($b));
} else {
$sb = length(freeze(\$b));
}
$sb = $sa;
} @$self;
return splice @$self, 0, $num;
}

1;


-- 
Greg McCarrollhttp://217.34.97.146/~gem/



Re: Tie::Hash::Cannabinol

2001-06-06 Thread Paul Makepeace

On Wed, Jun 06, 2001 at 05:10:43AM -0500, Richard Clyne wrote:
 If you request more items than are in the queue (e.g. lots of empty
 seats) the queue returns the items in order.  If you request less items
 than are in the queue (Bus almost full) the largest items push through
 and are selected.

package BusStop;

sub FETCH  {
rand  .99 ? (
$self-{$keys[rand @keys]},
$self-{$keys[rand @keys]},
$self-{$keys[rand @keys]}) : undef;
}

Paul

-- 
Always the first steps