ruby 正则表达式中的全局变量

在使用sub,gsub 时,正则表达式不中不能使用全局变量

str = "a123b456c789"
str.sub(/(a\d+)(b\d+)(c\d+)/,"a=#{$1}, b=#{$2}, c=#{$3}")
=>
"a=, b=, c="

可以使用

str = "a123b456c789"
str.sub(/(a\d+)(b\d+)(c\d+)/,'a=\1, b=\2, c=\3')
=>
"a=123, b=456, c=789"

str = "a123b456c789"
str.sub(/(a\d+)(b\d+)(c\d+)/) {"a=#{$1}, b=#{$2}, c=#{$3}"}
=>
"a=123, b=456, c=789"