s/PAT/STR/ <=> m/PAT/ && $& = "STR"; s/PAT/CODE/e <=> m/PAT/ && $& = do {CODE}; s/PAT/CODE/ee <=> m/PAT/ && $& = eval do {CODE}; s/PAT/CODE/eee <=> m/PAT/ && $& = eval eval do {CODE}; ... and so on