in reply to THANKS TO ALL: Passing huge args to system call

You can pass your $warn_list_arg to STDIN of your $perl_file

open(SCRIPT, "| perl $perl_file $comp") or die "can't run $perl_file: $!"; print SCRIPT $warn_list_arg; close(SCRIPT) or die "can't close $perl_file: $!";

see perlopentut, open