summaryrefslogtreecommitdiff
path: root/lib/dumpvar.pl
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2006-07-13 22:47:29 +0300
committerH.Merijn Brand <h.m.brand@xs4all.nl>2006-07-13 17:12:00 +0000
commit2f3efc978ada94e3718bd6f3a25b06cd1d13b6f8 (patch)
tree4fbd3f59e65577085646ea3f266175edf15efd1e /lib/dumpvar.pl
parent6ae709ad20fb5debe5f58c9686ed99226819442f (diff)
downloadperl-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.pl31
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;