in reply to newb question

When you say /($name)/, you are using the contents of $name as part of the regex to match. $name has a * in it (and could potentially have other characters that are special in a regex).

Perhaps you mean if ($testname eq $name)? Or if you really want to see if $testname contains the string in $name, say if ($testname =~ /(\Q$name\E)/), or even just if (index($testname, $name) >= 0).

By the way, are you intentionally skipping the first element in each @$row_arr_today? If not, use 0.., not 1...