2012-04-09 6 views
1
require 'open-uri' 
print "Enter a URL" 
add = gets 
open(#{add}) do |f| 
    j = f.read.scan(/<img/) 
    jlen = j.length 
    puts jlen 
end 

Ist der Code, den ich habe. Aus irgendeinem Grund gibt mir Ruby den Fehler: findimages.rb:8: syntax error, unexpected kEND, expecting $end Warum ist das?

+2

Dieser Fehler bedeutet "Ich habe Ihren Quellcode durchgesehen und ich habe erwartet, dass das Ende der Datei angezeigt wird, aber ich habe stattdessen ein' Ende' gefunden. " – Phrogz

Antwort

5

#{} funktioniert nur in interpolierten Strings. Verwenden Sie open(add) (oder perfekt richtig, aber vollkommen unnötig open("#{add}")).

4

Auf dieser Linie:

open(#{add}) do |f| 

Sie versuchen #{} zu verwenden, um eine Variable in einen String zu interpolieren, aber außerhalb einer Zeichenkette. Die # wird als Beginn des Kommentars interpretiert, und der Rest der Zeile wird als Kommentar behandelt.

Sie können einfach add direkt hier verwenden, ohne String-Interpolation.

+0

Ich finde es ein wenig merkwürdig, dass der Lexer nach "$ end" anstatt nach rechts paren suchte. – Phrogz

+0

@Phrogz Als ich dies mit einem ähnlichen Programm getestet habe, habe ich einen Fehler über den fehlenden paren und einen Fehler über $ end erhalten. Ich nehme an, dass der erste Fehler den Parser verwirrt, und so der zweite Fehler falsch ist. –

Verwandte Themen