Is there a way to interpolate strings that the user enters?

I'm writing a filter (pipe-cat = pat) that lets you add text to the front or
end of some piped data:

echo "2" | pat "1" - "3\n"

The "-" represents the piped data, so the above should print:

% echo "2" | pat "1\n" - "3\n"
1
2
3
%

But here's what I get:

% echo "2" | pat "1" - "3\n"
1\n2
3\n%

How can I interpolate the "\n" that the user entered?

Here's my code (disclaimer:  I'm still very much a novice at this stuff).

   #! /usr/bin/perl -w
   
   $newtxt = "";
   while ($_ = shift) {
     if ($_ eq "-") {
           open(FILE, "-") || die("Couldn't read from STDIN: $!\n");
           undef $/;
           $newtxt .= <FILE>;
           close(FILE);
       }
       else { $newtxt .= $_; }
   }
   $/ = "\n";
   chomp $newtxt;
   print $newtxt, "\n";
   exit(0);

I'm also very much open to tips from the pros on this stuff.

TIA!

- Bryan



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to