in reply to IPC::Run3 or qw operator issue?

The problem is with qw because it does not interpolate the $savefile variable. See Quote and Quote like Operators. You can prove this as follows:
use strict; use warnings; use Data::Dumper; my $savefile='//depot/perl/files/scripts/file.c'; my $cmd = [ qw(p4 where $savefile) ]; print Dumper($cmd); print ref($cmd), "\n"; __END__ $VAR1 = [ 'p4', 'where', '$savefile' ]; ARRAY

You could try this instead:

my $savefile='//depot/perl/files/scripts/file.c'; my $cmd = [ (qw(p4 where), $savefile) ]; print Dumper($cmd); print ref($cmd), "\n"; __END__ $VAR1 = [ 'p4', 'where', '//depot/perl/files/scripts/file.c' ]; ARRAY