This submission is in response to others asking how to embedded a PERL within a bash or ksh script. Though it may not be a common practice, it does illustrate a couple of examples as to how this would be accomplished.
#!/bin/sh # If you are not passing bash var's into the PERL HEREDOC, # then single quote the HEREDOC tag perl -le "$(cat <<'MYPL' # Best to build your out vars rather than writing directly # to the pipe until the end. my $STDERRdata="", $STDOUTdata=""; while ($i=<STDIN>){ chomp $i; $STDOUTdata .= "To stdout\n"; $STDERRdata .= "Write from within the heredoc\n"; MYPL print $STDOUTdata; # Doing the pipe write at the end will save you warn $STDERRdata; # a lot of frustration. )" <myInputFile 1>prints.txt 2>warns.txt
or
#!/bin/sh set WRITEWHAT="bash vars" # If you want to include your bash var's # Escape the $'s that are not bash vars. perl -le "$(cat <<MYPL my $STDERRdata="", $STDOUTdata=""; while (\$i=<STDIN>){ chomp \$i; \$STDOUTdata .= "To stdout\n"; \$STDERRdata .= "Write $WRITEWHAT from within the heredoc\n"; MYPL print \$STDOUTdata; # Doing the pipe write at the end will save you warn \$STDERRdata; # a lot of frustration. )" <myInputFile 1>prints.txt 2>warns.txt
If you wanted to pass command line arguments, insert them before the < indirect for STDIN.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: RFC Using PERL HEREDOC script within bash
by roboticus (Chancellor) on Aug 27, 2014 at 13:07 UTC | |
by RonW (Parson) on Aug 27, 2014 at 16:20 UTC | |
by mr_mischief (Monsignor) on Aug 28, 2014 at 19:05 UTC | |
by dcronin135 (Acolyte) on Aug 27, 2014 at 14:58 UTC | |
by Anonymous Monk on Aug 27, 2014 at 15:47 UTC | |
by dcronin135 (Acolyte) on Aug 27, 2014 at 17:25 UTC | |
|
Re: RFC Using PERL HEREDOC script within bash
by ikegami (Patriarch) on Aug 27, 2014 at 19:17 UTC | |
|
Re: RFC Using PERL HEREDOC script within bash
by trippledubs (Deacon) on Aug 28, 2014 at 13:27 UTC | |
| A reply falls below the community's threshold of quality. You may see it by logging in. |