From: A LeDonne Date: 2006-04-21T02:10:28+09:00 Subject: Re: Converting IP range to array of IP's On 4/20/06, Kris wrote: > I'm looking to convert an IP string (ranges, subnet masks or wild-carded > IP's) in to an array of IP strings: > > eg. "192.168.1.1 - 192.168.1.5" => ["192.168.1.1", "192.168.1.2", > "192.168.1.3", "192.168.1.4", "192.168.1.5"] > > Before I embark on this, is there already a ruby class that does it or > some of this? Well, starting with ranges, we can make ruby ranges work just fine for IPAddr objects by defining succ and <=> ... irb(main):001:0> require 'ipaddr' => true irb(main):002:0> class IPAddr irb(main):003:1> def succ() irb(main):004:2> return self.clone.set(@addr + 1) irb(main):005:2> end irb(main):006:1> def <=>(other) irb(main):007:2> return @addr <=> other.to_i irb(main):008:2> end irb(main):009:1> end => nil irb(main):010:0> start = IPAddr.new("192.168.1.1") => # irb(main):011:0> endy = IPAddr.new("192.168.1.5") => # irb(main):012:0> (start..endy).to_a => [#, #, #, #, #] Maybe that should be added to ipaddr.rb... -A