A bare split operates on the special variable $_, but you're not setting that in your script.
If you want to do this in a oneliner, see perlrun for the -n and -a switches. For example, if I understand your requirement, the command line ps -ef | perl -lane 'print $F[1] if /kdfadm/ && m{/opt/kdf/home}' should do what you want.
However, the preferred method is to write a script, and to use modules appropriate for the task. For example, you might want to look at Proc::ProcessTable. There is no need to call the external tools awk, sed, or grep, as that can be written entirely in Perl. In the (rare) cases you do need to run an external command, I wrote about that here, with example code. Update: Maybe if you can tell us more about what the bigger picture is, we can help with more specific suggestions.
In reply to Re: How to awk a grep result in-script
by haukex
in thread How to awk a grep result in-script
by ShipWreck
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |