in reply to Re^2: calling MATLAB from perl in order to create a .mat file
in thread calling MATLAB from perl in order to create a .mat file

First, please read Writeup Formatting Tips, since your lack of <code> tags seriously impedes the legibility of your post. As well, the liberal addition of some <p> tags to break up the text would be helpful.

I can say there are no immediately clear errors in the posted code, but again I have not worked with MATLAB on the command line for quite some time. You do some things I would consider quite poor form, such as not testing for the success of your open, using bareword file handles and using 2-argument open, but these are not syntax errors.

A potentially much cleaner solution is rather than piping into the executable is use your Perl script to explicitly generate a .m file, and then execute the .m using system or backticks. In this way, you will have an audit trail so you can figure out which language is giving you problems - I frequently take this autogeneration approach with auxilliary programs. Remember that Perl was originally designed for text processing and does it exceptionally well. Perhaps this will give you some ideas:

#!/usr/bin/perl use strict; use warnings; open(my $matlab, '>', 'm_file.m'); print $matlab <<EOF; x=1; save timer; EOF system('matlab -nojvm -r m_file');

Replies are listed 'Best First'.
Re^4: calling MATLAB from perl in order to create a .mat file
by Spooky (Beadle) on Jan 21, 2010 at 17:54 UTC
    Ken, Poor form aside - which I'll work on - I can execute MATLAB from within Perl but given the following: <x=0,1,2;y=0,1,2;plot(x,y,'o');save test;> can Perl create a .mat file with these statements so that the file "test.mat" would be created?
      For the piping scenario you used above (Using open() for IPC), the question is not can Perl create a .mat file but can MATLAB. This literally feeds these commands to the MATLAB executable via its command line interface, and hence my concern about not working with command line MATLAB for about a decade.