$obj->print(sprintf("Page %d - Section %d - %s", $obj->current_page, $obj->section->num, $obj->section->name, ) ); #### BEFORE | AFTER | COMMENT -------------+--------+---------------- '^(foo)' | BAR | Regular use '\^(foo)' | ^(foo) | Escaped ^ "\^(foo)" | BAR | Perl squashes \^ | | in double quotes '\\^(foo)' | \^(foo)| Confused with '\BAR'? "\\^(foo)" | ^(foo) | Double quotes #### BEFORE | AFTER | COMMENT -------------+--------+---------------- '^^(foo)' | ^(foo) | ^^ = escaped ^ '^^^(foo)' | ^BAR | ^^ = ^, ^(foo) '^^^^(foo)' | ^^BAR | ^^ = ^ twice '^ ^(foo)' | ^ BAR | No need to escape | ^ unless part of | ^(foo) match. #### BEFORE | AFTER | COMMENT -------------+--------+----------------- '^(^)(foo)' | ^(foo) | ^(^) = escaped ^ '^^(foo)' | ^BAR | ^ literal if not | part of pattern '^(^)^(foo)' | ^BAR | Explicit escape '^^(^)(foo)' | ^^BAR | Or ^(^)^(^)^(foo)