diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2006-07-13 22:47:29 +0300 |
---|---|---|
committer | H.Merijn Brand <h.m.brand@xs4all.nl> | 2006-07-13 17:12:00 +0000 |
commit | 2f3efc978ada94e3718bd6f3a25b06cd1d13b6f8 (patch) | |
tree | 4fbd3f59e65577085646ea3f266175edf15efd1e /lib/dumpvar.pl | |
parent | 6ae709ad20fb5debe5f58c9686ed99226819442f (diff) | |
download | perl-2f3efc978ada94e3718bd6f3a25b06cd1d13b6f8.tar.gz |
z/OS: non-CPAN ext and lib + main() without the third arg + Stephen McCamant's comment
Message-ID: <44B67921.6090901@iki.fi>
p4raw-id: //depot/perl@28567
Diffstat (limited to 'lib/dumpvar.pl')
-rw-r--r-- | lib/dumpvar.pl | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/lib/dumpvar.pl b/lib/dumpvar.pl index fa5b4dfb47..0268cea8bc 100644 --- a/lib/dumpvar.pl +++ b/lib/dumpvar.pl @@ -41,7 +41,12 @@ sub unctrl { local($v) ; return \$_ if ref \$_ eq "GLOB"; - s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg; + if (ord('A') == 193) { # EBCDIC. + # EBCDIC has no concept of "\cA" or "A" being related + # to each other by a linear/boolean mapping. + } else { + s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg; + } $_; } @@ -63,11 +68,19 @@ sub stringify { and %overload:: and defined &{'overload::StrVal'}; if ($tick eq 'auto') { - if (/[\000-\011\013-\037\177]/) { - $tick = '"'; - }else { - $tick = "'"; - } + if (ord('A') == 193) { + if (/[\000-\011]/ or /[\013-\024\31-\037\177]/) { + $tick = '"'; + } else { + $tick = "'"; + } + } else { + if (/[\000-\011\013-\037\177]/) { + $tick = '"'; + } else { + $tick = "'"; + } + } } if ($tick eq "'") { s/([\'\\])/\\$1/g; @@ -80,7 +93,11 @@ sub stringify { } elsif ($unctrl eq 'quote') { s/([\"\\\$\@])/\\$1/g if $tick eq '"'; s/\033/\\e/g; - s/([\000-\037\177])/'\\c'._escaped_ord($1)/eg; + if (ord('A') == 193) { # EBCDIC. + s/([\000-\037\177])/'\\c'.chr(193)/eg; # Unfinished. + } else { + s/([\000-\037\177])/'\\c'._escaped_ord($1)/eg; + } } $_ = uniescape($_); s/([\200-\377])/'\\'.sprintf('%3o',ord($1))/eg if $quoteHighBit; |