$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)