Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Parsing ldap attributes into a csv

by toolic (Bishop)
on Mar 02, 2018 at 19:45 UTC ( #1210253=note: print w/replies, xml ) Need Help??


in reply to Parsing ldap attributes into a csv

To access a hash key, use curly brackets, not parens. This fixes the errors:
foreach my $key (keys %data) { print "key=$key, value=$data{$key}\n"; $data{$key} =~ s/(^|$)/"/g if $data{$key} =~ /,/; }

Replies are listed 'Best First'.
Re^2: Parsing ldap attributes into a csv
by lvirden (Novice) on Mar 02, 2018 at 20:22 UTC
    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.
      $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:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1210253]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2021-10-18 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My first memorable Perl project was:







    Results (73 votes). Check out past polls.

    Notices?