1

私はコードを持っています:

require 'open-uri'
print "Enter a URL: "
add = gets
added = add.sub!(/http:\/\//, "")
puts "Info from:  #{add}"
open("#{add}") do |f|
  img = f.read.scan(/<img/)
  img = img.length
  puts "\t#{img} images"
  f.close
end
open("#{add}") do |f|
  links = f.read.scan(/<a/)
  links = links.length
  puts "\t#{links} links"
  f.close
end
open("#{add}") do |f|
  div = f.read.scan(/<div/)
  div = div.le1ngth
  puts "\t#{div} div tags"
  f.close
end

(はい、それは良いコードではないことを知っています。コメントしないでください)実行するとき、URLについて、次のように入力します。

http://stackoverflow.com

次のエラーが発生します。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `initialize': No such file or directory - http (Errno::ENOENT)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open_uri_original_open'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:32:in `open'

このエラーが発生するのはなぜですか?どうすれば修正できますか?

4

1 に答える 1

2

このString.sub!メソッドは、その場で文字列を置き換えるため、設定に加えてadd.sub!(/http:\/\//, "")の値を変更します。addadded

URIでメソッドを使用するにはopen(name)、の値はのnameようなURIスキームで始まる必要がありhttp://ます。

added設定する場合は、次のように設定します。

added = add.sub(/http:\/\//, "")
于 2012-04-10T01:40:30.590 に答える