Below, using run "printf", "%s\t", .[0].uc, .[1], .[2].uc given $_; run "printf", "\n";, separating column output with \t tabs. Note here we add .uc to uppercase the first and third columns, to show that you can still clean up text if you need to (before invoking your my_cmd):
Finally, you can take input files off the command line using Raku's $*ARGFILES dynamic variable. Obviously, you'll substitute your my_cmd in place of printf below:
~$ raku -MText::CSV -e '
my $parser = Text::CSV.new;
until $*ARGFILES.eof {
$_ = $parser.getline($*ARGFILES);
run "printf", "%s\t""%s ", "--arg1", .[0].uc, "--arg2", .[1], "--arg3", .[2].uc given $_;
run "printf", "\n";
};' luator.txt
FOO--arg1 foo --arg2 42 --arg3 REDred
BAR--arg1 bar --arg2 13 --arg3 BLUEblue
BAZ--arg1 baz --arg2 27 --arg3 GREENgreen
SeeOtherwise, see the first link below for how to save output to a Raku "Proc" (process) object, or the second link below for using "Proc::Async" (asynchronous process interface).