Ответ 1
Прямо от исходный источник для регулярных выражений:
/o
приводит к тому, что любые подстановки#{...}
в конкретном литерале регулярного выражения выполняются только один раз, при первом его вычислении. В противном случае подстановки будут выполняться каждый раз, когда литерал генерирует объект Regexp.
Я мог бы также включить этот пример использования:
# avoid interpolating patterns like this if the pattern
# isn't going to change:
pattern = ARGV.shift
ARGF.each do |line|
print line if line =~ /#{pattern}/
end
# the above creates a new regex each iteration. Instead,
# use the /o modifier so the regex is compiled only once
pattern = ARGV.shift
ARGF.each do |line|
print line if line =~ /#{pattern}/o
end
Итак, я думаю, что это скорее всего для компилятора, для строки single, которая выполняется несколько раз.