use warnings; use strict; use Carp; use Devel::Peek; sub parse { Dump $_[0]; ${$_[0]}=~/\Gfoo/gc or confess; } warn "##### Case 1 #####\n"; parse \(''.'foo') for 1..2; warn "##### Case 2 #####\n"; parse \('foo') for 1..2;