in reply to checking for piped input data

I don't smell perl, I smell shell.

If script.pl -y goodbye yields a single string, use backticks:

$ script.pl -x `script.pl -y goodbye`

If the output of script.pl -y goodbye produces more, and each token is to be processed in turn with script.pl -x, use a loop:

$ for arg in `script.pl -y goodbye`; do script.pl -x $arg; done

Also, man xargs(1).

If all arguments from perl -y goodbye are to be processed by a single call to perl -x and appear on a single line, have perl -x check @ARGV, probably using Getopt::Std. If they are on multiple lines and piped into script.pl -x, use the -n switch (again, see perlrun), probably checking for the switch -x in a BEGIN block.

This is all I can come up with, given your question. You know, as in "garbage in - garbage out" :)

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'