in reply to Re: Parsing ldap attributes into a csv
in thread Parsing ldap attributes into a csv

Thank you for your advice - that helped a lot. After making that change, I now get the message:
Use of uninitialized value in pattern match (m//) at ./ldap2csv.pl lin +e 58, <$in> chunk 7882.
for the line
$data{$key} =~ s/(^|$)/"/g if $data{$key} =~ /,/;
I did some troubleshooting and find there is a key of "11" which has no value. That appears to be the result of the line
$data{@header} = (); # To label the data.
Originally the line was
@data{@header} = (); # To label the data.
and I didn't think that looked right. I tried changing the line back to that. There seems to still be issues but I will try to figure out why all my quoted values start with a comma. I appreciate your help. I wish this wasn't such a hard task.

Replies are listed 'Best First'.
Re^3: Parsing ldap attributes into a csv
by AnomalousMonk (Archbishop) on Mar 02, 2018 at 20:49 UTC
    $data{@header} = ();  # To label the data.

    This expression evaluates the array  @header in scalar context. An array evaluated in scalar context yields the number of elements in the array.

    @data{@header} = ();  # To label the data.

    This expression is a slice. The elements of  @header are used as hash keys, to which values are assigned from the list on the RHS of the assignment. Since this list is empty in both statements, all the values assigned in both cases are undef.

    c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my %data; my @header = qw(fee fie foe fum); ;; $data{@header} = (); dd \%data; ;; @data{@header} = (); dd \%data; " { 4 => undef } { 4 => undef, fee => undef, fie => undef, foe => undef, fum => undef }


    Give a man a fish:  <%-{-{-{-<