in reply to Re: Subtracting Stringified Negative Numbers
in thread Subtracting Stringified Negative Numbers

And this reminds me of another reason why I don't use Data::Dumper. It defaults to being "efficient" and so doesn't actually 'dump' the variable contents, in an effort to avoid the arduous task of escaping all those weird characters. You have to go out of your way to tell Data::Dumper to "useqq" for it to actually dump strings in a fool-proof manner.

> perl -del # ... DB<4> print Dumper("\c\\-10") $VAR1 = '-10'; DB<5> print Data::Dumper->new(["\c\\-10"])->Useqq(1)->Dump() $VAR1 = "\34-10"; DB<6>

The unescaped CTRL-\ removed from the above output as how it would be displayed would depend on several things and it didn't even remain a CTRL-\ after being copy-n-pasted into the browser and converted to Latin-1 etc. anyway.

Update: Oh, I thought Zaxo had noted what "^\" represents but I see he didn't so, to be very clear, "^\" is how perl is safely dumping a single CTRL-\ ("\c\\") character in that warning, which is why my example code looks like it does. No, I didn't realize this when first viewing the warning.

- tye        

Replies are listed 'Best First'.
Re^3: Subtracting Stringified Negative Numbers (Data::Dumber)
by monkfan (Curate) on Jun 22, 2007 at 08:47 UTC
    You are right, tye. Following your suggestion, and by doing this:
    my $some_string = "0,-933"; $Data::Dumper::Useqq = 1; print Dumper ($some_string) ; my ($id1,$n1) = split(",",$some_string); #then do things with $n1 and $n2.
    It gives:
    $VAR1 = "0,\34-933";
    So my questions are:
    • How can this \34 comes, in the first place? Can we avoid that?
      My development is always under Linux/Unix platform. And those variable values are read from a file.
    • How to remove this \34 character from $VAR?

    Regards,
    Edward

      You're still posting snippets of what you think is going on, instead of snippets of real code. For example, your latest snippet simply doesn't do what you are suggesting it does:

      use Data::Dumper; $Data::Dumper::Useqq=1; my $some_string = "0,-933"; print Dumper $some_string; $VAR1 = "0,-933";
      So my questions are:
      • How can this \34 comes, in the first place? Can we avoid that?
      • My development is always under Linux/Unix platform. And those variable values are read from a file.
      • How to remove this \34 character from $VAR?

      The only conclusion we can draw from what you've posted so far is that the file you are reading these values from contains these \x1c (octal \34) characters.

      Try dumping the file using the od command:

      od -b \path\to\the\file # or od -tx1 \path\to\the\file

      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.