in reply to trouble with text::csv

See Byte order mark aka BOM for your 3 invisible characters.

Your file is marked as utf8

Update

See what the module has to say about detecting BOMs with ->header

Replies are listed 'Best First'.
Re^2: trouble with text::csv
by BernieC (Pilgrim) on Dec 05, 2021 at 15:44 UTC
    Since I'm an ISO-latin kinda guy and I find unicode a bother. Why didn't this work?
    open ($if, "<", $dbfile) or die "Can't open $dbfile: $!\n" ; seek($if, 3, 0) ; [...]
    Shouldn't that have just skipped over the BOM and left me with a vanilla text file on $if for the CSV stuff to read? {it didn't :(} There seems to be some magic/nuisance going on that I don't understand.
      No idea what you mean with ISO Latin, there are many

      And how do you know? Do you even have any bytes >127?

      Please note that ASCII, utf8 and most other encodings are identical with bytes <128.

      It's perfectly possible to have an utf8 encoded file which is plain ASCII.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

      One other thing is that I don't use CSV to handle the headers -- my ONLY use of the CSV module is to read a line from the file and break its fields into an array. I know this is kinda dumb considering that if I were cleverer CSV could do most all of my work but it is really only about an eight line, simple program with CSV parsing the lines into fields. I'm tempted to abandon CSV entirely and just write a routine that will take a line of csv data and burst it directly
        > I'm tempted to abandon CSV entirely and just write a routine that will take a line of csv data and burst it directly

        good luck with quoting rules and embedded separators.

        The real problems seems to be that you don't really get the difference between ISO encodings and UTF8 and that ASCII is a subset of all of them and you keep guessing.

        The exporter you used was configured to deliver an UTF8 encoded file with a BOM.

        If the actual characters are only in the ASCII range you won't face any other problems. If there where really any characters encoded in "ISO-Latin-1" like ä or è you should be capable to tell right away. (UTF8 will require 2 not 1 byte for them)

        FWIW: As a workaround: you should be able to read the whole file into a string, strip the first 3 characters and open a filehandle to that string.

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery