重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

プログラミングを始めて間もない初心者です。
2chの国内サッカー掲示板一覧(http://ex24.2ch.net/soccer/subback.html)から
「集え」「名古屋グランパスファン」との文字列で検索したリンクを開き、取得した名古屋グランパスのスレッドの内容を表示するプログラムを書こうと、
以下のようなコードを書きました。が、
test1-9.rb:32: syntax error, unexpected tIDENTIFIER, expecting keyword_endとの警告メッセージとともにエラーになってしまいます。

#-*- coding:sjis-*-
require 'open-uri'
require 'uri'

class Searchgra 
def initialize
open("http://ex24.2ch.net/soccer/subback.html"){|g|
g.each_line{|title|
tsu = "集え"
sup = "グランパスファン"
if /(<a href="(.*)\/l50">.*#{tsu}.*#{sup})/ =~ title then
@grasre ="http://ex24.2ch.net/test/read.cgi/soccer/#{$2}"
end
}
}
end

def fuku

open("#{grasre}") {|f|
linenum = 0
f.each_line {|line|
line.gsub!(/&gt;/,">")
line.gsub!(/<br><br>/,"<br>\n")
if /<dd>/ =~ line then
linenum += 1
end
/<dd>.*<br>\n/ =~ line
print linenum,";","#{$&}".gsub!(/<.*?>/,"")
print("\n") #ここが32行目
}
} 
end
end
search1 = Searchgra.new()
search1.fuku
ネットで様々な情報を見てみましたが原因が分からず、
またエラーメッセージ中のtIDENTIFIERとはいったい何なのかも分かりません。
ソースコードの間違い等、指摘をよろしくお願いします。

A 回答 (1件)

identifierとは識別子・・・名前ですね。

変数名とかメソッド名。
エラーメッセージは「endが来るべき所で識別子があった」です。

コピペしてみましたが、そのエラーは出ないですね。全角空白とか入ってませんか?Rubyは全角文字も識別子に使えるので、それもあるかも。ただ、32行目あたりにendが必要とされる箇所はないので、もっと離れたところに原因がある可能性もあります。

あと、
誤:open("#{grasre}") {|f|
正:open("#{@grasre}") {|f|
    • good
    • 0
この回答へのお礼

回答ありがとうございます。非常に助かりました。
>全角空白とか入ってませんか

ドンピシャでした。コード中に二箇所ほど全角空白が見つかり、その空白を削除すると
unexpected tIDENTIFIER, expecting keyword_end
という警告メッセージは出なくなり、改めて出たエラーメッセージで文字コードの問題が提示されたので、nkfをrequireして修正したら望みどおりの結果が得られました。
重ね重ね、本当にありがとうございました。

お礼日時:2009/03/13 11:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!