Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hash of Arrays nItems problem

0 views
Skip to first unread message

hoy...@gmail.com

unread,
Mar 17, 2006, 5:11:01 PM3/17/06
to
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

Robert Klemme

unread,
Mar 19, 2006, 7:32:01 AM3/19/06
to
hoy...@gmail.com 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

hoy...@gmail.com

unread,
Mar 19, 2006, 5:56:26 PM3/19/06
to
Oh, snap. Thanks robert. I will name my first son Robert in your
honor. Thanks a million.

Tony Perrie
http://involution.com

Robert Klemme

unread,
Mar 20, 2006, 4:36:23 AM3/20/06
to
hoy...@gmail.com 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

0 new messages