in reply to parenthesis regex

I agree with apl. You haven't showed us the code that generates that warning. That warning occurs when concatenating an uninitialized variable
$x . "\n"
or when interpolating of an uninitialized variable (that's the "or string" of the error message)
"$x\n"

Those two snippets produce identical code, thus the common warning.

You can also get the warning when interpolating into a regexp, but you get a second warning too.

>perl -we"my $x; /$x/" Use of uninitialized value in regexp compilation at -e line 1. Use of uninitialized value in pattern match (m//) at -e line 1.

On a side note, the code you showed us is problematic for other reasons

if (($Delay_id =~ /\(\d\d/) || ($Delay_id =~ /\(\d\d\d/)){

is the same thing as

if ($Delay_id =~ /\(\d\d/){

since anything the second // could match will also be matched by the first //. If you're planning on adding captures, you want

if ($Delay_id =~ /\((\d\d\d?)/){