Sure, but this is just a hunch ...
The problem with one-liners (;)) is that Unix prefers the
-e argument (the code) to be quoted with double quotes,
while Win32 requires that is it be quoted with single
quotes. Unix allows single quotes, but most (if not all)
shells will try to interpolate the dollar signs. The
following code should work on Win32, but not in UNIX:
# bash and sh
[jeffa@trinity perl]$ perl -ple "}{$_=$." foo.pl
Can't modify constant item in scalar assignment ...
# csh and tcsh
[jeffa@trinity ~/perl]$ perl -ple "}{$_=$." foo.pl
Illegal variable name.
# ksh
$ perl -ple "}{$_=$." foo.pl
Bareword found where operator expected ...
In all of these cases, single quotes instead of double
quotes would alleviate these errors. But .. it's not
necessarily the double quotes themselves that cause the
trouble, it's the dollar signs. So ... use globs.
perl -ple "}{*_=*." foo.pl
Now, Abigail-II never confirmed nor denied this, so i'll
treat that as a successfully executed Unix command. ;)
Update:
Of course (as jmcnamara pointed out to me via /msg),
Abigail-II appears to never use Windows ... kinda throws
a monkey wrench in the theory, but ... globs still get
around that quoting problem.
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)
|