That's completely expected with
qw() as it disables all variable interpolation. It simply splits the string on white space and turns that into a list of values - convenient since rather than
"bla", "bla", "bla", you can just write
qw(bla bla bla). In this case, to get the variable values, just close the
qw() for a second:
system(qw(updquery -sdate), $sdate, "-edate", $edate, qw(-brtype golden -status closed));
You could just mash it all into a string for less typing, but using a list when calling system is good practice. See
perldoc -f system.
Makeshifts last the longest.