Today I came upon a quirk (bug?) of shebang/hash-bang line argument parsing. Past experience (and perlrun) tells me that perl (lowercase) parses commandline options from the shebang line:
$ cat test-none.pl #!/usr/bin/perl print "foo"; $ cat test-ell.pl #!/usr/bin/perl -l print "foo"; $ perl -l test-none.pl foo $ perl test-ell.pl foo $ ./test-ell.pl foo $ ./test-none.pl foo$ # note the lack of a newline
So, why do I get the wide-character warning in the following:
$ cat test-noCDS.pl #!/usr/bin/perl -l print "\x{101}"; $ cat test-withCDS.pl #!/usr/bin/perl -l -CDS print "\x{101}"; $ perl -l -CDS -e 'print "\x{101}"' Ä $ perl -CDS test-noCDS.pl Ä $ perl test-withCDS.pl Wide character in print at test-withCDS.pl line 2. Ä $ ./test-withCDS.pl Ä
Even more mysteriously, it seems the -CDS is getting applied (as seen by testing ${^UNICODE}), but not to STDOUT:
$ cat CDS.pl #!/usr/bin/perl -l -CDS print ${^UNICODE}, ' ', "\x{101}" $ perl CDS.pl Wide character in print at CDS.pl line 2. 31 Ä $ perl -CDS CDS.pl 31 Ä
Is this a bug? If so, is it merely a documentation bug? (need a warning that -C doesn't get applied in time to affect STD(IN|OUT|ERR) if it's in a shebang?)
$ perl -v This is perl, v5.8.8 built for i686-linux
In reply to Bug in perl -C (Unicode) option parsing? by benizi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |