SOLVED (sort of): perl script prints parts of strings in the wrong order
M. Fioretti
mfioretti at nexaima.net
Tue Aug 7 05:43:58 UTC 2018
as usual, I stumped in the solution one second after posting to the
list, but I
can't say I completely understand it, so any comment is welcome.
I piped the output of the script through "od -c", and saw lots of \r
characters
right in the places where pieces of strings were "swapped".
So I changed this:
chomp;
to this:
chomp;
s/\r//g;
and now everything works as intended. Problem is, *why* did I have to do
this?
I thought the "chomp" command in Perl also strips those \r characters
out, and
I am pretty sure it did, earlier.
Thanks,
Marco
On 2018-08-07 07:28, M. Fioretti wrote:
> hello,
>
> I am trying to reuse an old perl script I wrote years ago, on an
> Ubuntu 16.-04LTS x86_64 box.
> It behaves in a very odd way now, and I cannot figure out if it is the
> code that is not
> compatible with current versions of Perl, or if there is something
> VERY strange happening
> between the script, and the terminal it runs in.
>
> The part of the script that works badly is this:
>
> while (<INPUTFILE>) {
> chomp;
> my $LINE = $_;
> many lines that "clean up" $LINE, removing certain substrings
> etc...
>
> @F = split /:/, $LINE;
> print "CURL:==> $F[0] ++ $CURLRES{$F[0]} ;;\n";
> }
>
> when I run it, SOME of the printed lines (say 1 every 30) have the
> expected format:
>
> CURL:==> string_a ++ string_b ;;
>
> but all the others are like this:
>
>
> ;;L:==> string_c ++ string_d ;;
>
> that is, the three initial "CUR" characters are replaced by " ;;"
>
> It's as if something had pasted the last three characters over the
> first three ones.
>
> I have no idea what is going wrong, and why. Any help is appreciated,
>
> TIA,
>
> Marco
--
http://mfioretti.com
More information about the ubuntu-users
mailing list