in reply to Re^5: How to output matrix data from Math:;MatrixReal into a Hash or an Array
in thread How to output matrix data from Math:;MatrixReal into a Hash or an Array

Folks thank you very much for your excellent help here. Truly appreciated.

I modified the code slightly to send data to a csv file as below.

use Text::CSV; use Math::MatrixReal; my $mref = [ [ '5', '4', '4', '2', '4' ], [ '9', '6', '4', '4', '3' ], [ '2','73','96', '6', '8' ], [ '2', '4', '9','87', '8' ], [ '2', '4','10', '6', '8' ], ]; my $matrix = Math::MatrixReal->new_from_rows( $mref ); # At this point $matrix is a Math::MatrixReal object that # resembles the one you showed us a Data::Dumper dump of. my $csv = Text::CSV->new; open my $FILE, ">", "./whatever.csv"; foreach my $row_num ( 1 .. 5 ) { $csv->print(*STDOUT, [ map { $matrix->element($row_num,$_) } 1 .. 5 +] ); print {*STDOUT} "\n"; $csv->print($FILE, [ map { $matrix->element($row_num,$_) } 1 .. 5 ] +); print $FILE "\n"; }
  • Comment on Re^6: How to output matrix data from Math:;MatrixReal into a Hash or an Array
  • Download Code

Replies are listed 'Best First'.
Re^7: How to output matrix data from Math:;MatrixReal into a Hash or an Array
by davido (Cardinal) on May 15, 2014 at 05:22 UTC

    One possible bug I see: print {*STDOUT}, "\n";.

    In the code I provided earlier in this thread, the $csv->print(....) was directing to STDOUT because I didn't want to set up an output file in an example script. Also, the newline was explicitly output because I noticed that one wasn't being inserted between CSV rows automatically by $csv->print(...).

    Now in your solution you've got $csv->print($FILE...), but haven't directed the "print {*STDOUT} "\n"; to $FILE instead.

    So you may want to look at the CSV it's outputting and verify that there's a newline being created between what you intend to be CSV rows. It may not be happening.


    Dave

      Thank you very much for your help