I'm not sure what you thought I was showing you on IRC last night, since I pointed this out multiple times.

On Sat, Oct 20, 2018 at 3:43 AM ToddAndMargo via perl6-users <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:

    Hi All,

         my Str $CrLf   = chr(0x0d) ~ chr(0x0a);
         $String ~~ s:global/ $CrLf /\n/;

    How do I get rid of the extra $CrLf variable?

    Many thanks,
    -T

On 10/20/18 9:29 AM, Brandon Allbery wrote:
The escape sequence \x allows you to embed characters by their code. "\x0D\x0A" is the same as the variable.

So
    $String ~~ s:global/ \x0D\x0A /\n/;

?

I did not pick up on what you were saying last night.  I did not
realize that `\x` was not part of the `0D`.  I thought the
right way to say 0H0D was "0x0D" and that the "x" was part of
the syntax of the 0H0D.  And I could not figure what the "\"
was escaping.

A couple of the web sites I was reading download all sorts of
wild junk and UTF-8 coughed on them.  Reading then as UTF8-C8
only made things "much" worse.  a 1000+ line web page converted
to about 40 lines, filled with all sorts of wild unprintable
characters, and missed all the info I was looking for.

To add insult, "split" would not split on a single 0H0A line
terminator.  Weird because `\n` is 0H0A on my machine.

Reading the site as raw bytes (Buf) and doing my own conversion
fixed the issue:

sub AsciiToStr ( Buf $Ascii ) {
   # masks off bits above 0H7F
   # change 0H0D 0H0A to \n
   # change lone 0H0D to \n
   # return the corrected string

   my Str $String = "";
   my Str $CrLf   = chr(0x0d) ~ chr(0x0a);
   my Str $Cr     = chr(0x0d);

   for $Ascii[0..*] -> $I { $String ~= chr( Int( $I ) +& 0x7F ); }
   $String ~~ s:global/ $CrLf /\n/;
   $String ~~ s:global/ $Cr /\n/;

   # print( "AsciiToStr <" ~ $String ~ "\n" );

   return $String;
}

The mask worked perfectly.
   Int( $I ) +& 0x7F

Thank you all for the help last night!  You guys were awesome!
Hopefully here is few months I will be answering more questions
than asking.

-T

Reply via email to