В следующем:
def foo
p $`, $&, $'
end
def bar x = $`, y = $&, z = $'
p x, y, z
end
'abc' =~ /b/
p $`, $&, $' # => 'a', 'b', 'c'
foo # => nil, nil, nil
bar # => nil, nil, nil
псевдопеременные, связанные с соответствием регулярному выражению, похоже, сбрасываются в foo и даже в части, принимающей аргументы в bar. Я знаю, что это как-то связано с областью действия, но, насколько я понимаю, переменную, предшествующую и выходящую за пределы области видимости, обычно можно увидеть внутри этой области (кроме некоторых сред, связанных с eval, exec и т. переменная внутри области видимости не видна снаружи.
Можете ли вы сказать мне природу этих псевдопеременных, связанных с регулярным выражением?