Hash of Arrays nItems problem

I’m having a bit of problem using a hash of arrays. It appears that
nitems are wrong for the individual elements are wrong when I do this:

#!/usr/bin/env ruby
$:.unshift(File.join(‘…’, ‘lib’))
require ‘http-access2’

h = HTTPAccess2::Client.new()
element = Hash.new([])

while urlstr = ARGV.shift
response = h.get(urlstr) { |data|

data.gsub(/<(description|title|link)>(.+)</(description|title|link)>/)
{
print $1,“\n”
element[$1].push($2.gsub(/\s\s+/m," "))
}
}
end

print "site description —> ", site_description, “\n”
print "site title ---------> ", site_title, “\n”
print "description.nitems → ", element[‘description’].nitems, “\n”
print "title.nitems -------> ", element[‘title’].nitems, “\n”

site_description = element[‘description’].shift
site_title = element[‘title’].shift

while element[‘description’].nitems > 0
print element[‘title’].shift.gsub(/\n+/, “”),“\n”
print element[‘description’].shift.gsub(/\n+/, “”),“\n\n”
end

% ruby rss.rb http://involution.com/rss.php
site description —> involution.com
site title ---------> http://involution.com
description.nitems → 30
title.nitems -------> 30

There are 10 of each links, putting a print in the hget enclosure shows
that only 10 descriptions, links, and titles are added, but the
individual array sizes are reported as 30. What am I doing wrong?

Tony

[email protected] wrote:

I’m having a bit of problem using a hash of arrays. It appears that
nitems are wrong for the individual elements are wrong when I do this:

#!/usr/bin/env ruby
$:.unshift(File.join(’…’, ‘lib’))
require ‘http-access2’

h = HTTPAccess2::Client.new()
element = Hash.new([])

You want

element = Hash.new {|h,k| h[k] = []}

Otherwise you’ll be adding to the same single array instance for all
elements.

Kind regards

robert

Oh, snap. Thanks robert. I will name my first son Robert in your
honor. Thanks a million.

Tony P.
http://involution.com

[email protected] wrote:

Oh, snap. Thanks robert. I will name my first son Robert in your
honor. Thanks a million.

You’re welcome. And I feel humbled.

Kind regards

robert