Now pass an arbitrary chunk of Perl code to "perl -e" in a portable manner.
I was only demonstrating that windows supported backticks, not championing the idea of using them and -e as a useful mechanism.
Capture both STDOUT and STDERR from it. Not so trivial.
Capturing stderr also is trivial:
C:\test>perl -E"say `perl -c -Mstrict -we\"my \$l = 365.25*\" 2>&1` " syntax error at -e line 1, at EOF -e had compilation errors.
But I would have thought feeding the code to a piped-open and checking the exit code would suffice if all that is required is a yay or nay.
And if you need to actually capture the error messages produced, then this might do the trick:
#! perl -slw use strict; use Win32::Socketpair qw[ winopen2_5 ]; my( $pid, $sock ) = winopen2_5( 'perl.exe', '-c' ); print $sock <<'EOP'; my $x = 365.25**3; my $y = qx[ perl -c -e"say 'boo'"; ]; my $z = sub { print $sock <<; my $x = 365.25**3; my $y = qx[ perl -c -e"say 'boo'"; ]; my $z = sub { print $sock <<; my $x = 365.25**3; my $y = qx[ perl -c -e"say 'boo'"; ]; my $z = sub { 1; }; }; }; EOP shutdown $sock, 1; print while <$sock>; close $sock; ( $pid, $sock ) = winopen2_5( 'perl.exe', q[-E"say 'hello'; warn; die; +"] ); shutdown $sock, 1; print while <$sock>; close $sock; __END__ C:\test>winopen2_5 - syntax OK Warning: something's wrong at -e line 1. Died at -e line 1. hello
In reply to Re^3: How to do perl -c inside perl? (quoting)
by BrowserUk
in thread How to do perl -c inside perl?
by rockyb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |