in reply to Read into stdin pipe characters

Maybe you need to quote your passed strings. For example:
C:\> my_prog.pl a b "c|d|e|f"

Also, you really want:

$stuff = $ARGV[2];

Replies are listed 'Best First'.
Re^2: Read into stdin pipe characters
by w3ntp (Beadle) on Oct 05, 2010 at 20:16 UTC
    This input string does not contain quotes. Otherwise this would be easy

      You seem to be confusing the string and the literal (piece of shell code) that produces the string.

      The string may not have quotes, but the shell string literal that produces the string must use quotes or some alternative. For example, with bash, you could use any of the following shell commands:

      my_prog.pl a b 'c|d|e|f' my_prog.pl a b "c|d|e|f" my_prog.pl a b c\|d\|e\|f

      In all cases, a string of four letters separated by pipes will be passed to Perl by the shell. print $ARGV[2] will result in the following:

      c|d|e|f
      First, please use <code> tags for your code. It's very, very difficult to read your program.

      Are you sure the error is coming from perl? How are you passing pipe characters on the command line if you're not using quotes?

      Also, please "use strict;" and "use warnings;" before posting:
      <code>

      #!/usr/local/bin/perl use strict; use warnings; my $stuff = $ARGV[2]; print $stuff; exit;

      </code>