Inside the processed template: x1 = x1_defined_in_template x2 = x2_defined_in_stash_set x3 = x3_defined_in_process_t_vars Post-process, the stash vars are: x1: x1_defined_in_stash_set x2: x2_defined_in_stash_set x3: x3_defined_in_stash_set Note that we could check more easily via _dump: [Template::Stash] { x3 => x3_defined_in_stash_set x2 => x2_defined_in_stash_set global => { } inc => CODE(0x18503f8) dec => CODE(0x1850458) x1 => x1_defined_in_stash_set _PARENT => }