I have a Perl hash that I need to write to JSON and to CSV formats.
A print Dumper( \%formdata ) of my hash looks like this.
$VAR1 = {
'SPRequest' => {
'xrelease' => '13038',
'macaddr' => '47:00:11:22:00:30',
'name' => 'localhost',
'description' => 'demo'
},
'.submit' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean
+' ),
'class' => 'SPRequest',
'22406' => {
'win.profile' => 'production',
'win.os_version' => 'standard',
'win.os_part_size' => '1'
}
};
Here is the snipplet of code I use to produce my json file.
my $form_data_file = "/tmp/${hostname}_${macaddr}.json";
open FH, ">$form_data_file" or die "Could not open $form_data_file. :$
+!\n";
print FH to_json( \%formdata, {pretty=>1} );
close FH;
I am able to output my JSON to a file which looks like this:
[red@tools-dev1 psong]$ cat /tmp/localhost_47-00-11-22-00-30.json
{
"SPRequest" : {
"xrelease" : "13038",
"macaddr" : "47:00:11:22:00:30",
"name" : "localhost",
"description" : "demo"
},
".submit" : true,
"class" : "SPRequest",
"22406" : {
"win.profile" : "production",
"win.os_version" : "standard",
"win.os_part_size" : "1"
}
}
Here is the code I am using to create my CSV file:
my $form_data_file_csv = "/tmp/${hostname}_${macaddr}.csv";
# Text::CSV::Slurp wants arrayref of hashref
my $ARoHR = [ \%formdata ];
my $csv = Text::CSV::Slurp->create( input => $ARoHR);
open FH, ">$form_data_file_csv" or die "Could not open $form_data_file
+_csv. :$!\n";
print FH $csv;
close FH;
But the problem is my CSV file which ends up looking like this:
[red@tools-dev1 psong]$ cat /tmp/localhost_47-00-11-22-00-30.csv ; ech
+o
.submit,22406,SPRequest,class
true,HASH(0x8d81918),HASH(0x8d67980),SPRequest
What am I doing wrong here?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.