From: Ryan Davis Date: 2012-11-05T08:36:22+09:00 Subject: Re: undefined method `map' On Nov 4, 2012, at 14:15 , Henry Maddocks wrote: > > On 5/11/2012, at 10:35 AM, Marcelo Laia wrote: > > It's telling you what the problem is. > >> # search for xac + hypothetical >> xac = serv.bfind("T00084 hypothetical") >> # get the IDS into an array >> ids = xac.map { |gene| $1 if gene =~/^(.*?)\s+/ } >> # retrieve fasta and print >> ids.each { |id| puts serv.bget("-f -n 1 #{id}") } >> -----CODE END HERE-------- >> > >> /home/marcelo/bin/scripts/get_fasta4:10:in `
': undefined method >> `map' for # (NoMethodError) > > > xac is a String which doesn't have a method 'map'. 'map' expects an Array. #map is a member of Enumerable, not just Array. String used to be Enumerable in 1.8-, but it isn't in 1.9+ 10000 % irb >> String.ancestors => [String, Enumerable, Comparable, Object, Kernel] 10001 % irb19 >> String.ancestors => [String, Comparable, Object, Kernel, BasicObject] > You can either force xac to be an Array… > > ids = Array(xac).map { |gene| $1 if gene =~/^(.*?)\s+/ } xac.lines.map is clearer. There should probably also be a #compact since the regexp could potentially not match.