Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

HI, 1) I am trying to write a perl script to run my already compiled C++ program. Since i need to run this program many times (25 times atleast) How do i do this? 2) and every time the C++ code creates a text file output by name say "data.txt" i need perl to rename this file as say 1.txt, 2.txt, where the number indicates the how many times the C++ code is being called. Or should i create a new file and copy all the C++ output into it. How to do this? 3) Once i have these new files 1.txt, 2.txt etc., i need to update them, basically they have 3-4 columns and 100's of rows of numbers in them. I need to add or subtarct something from each of the numbers in the file. Basically how to update the files? 4)) also for each run i need to specify some arguements or user input at the console. How to do this? I am a novice to perl.. So any suggestions would be of great help. Thanks in advance
  • Comment on Running C++ multiple times and saving the output

Replies are listed 'Best First'.
Re: Running C++ multiple times and saving the output
by Zaxo (Archbishop) on Dec 02, 2004 at 07:05 UTC

    Running external programs is done with open, system, exec, or "backticks" (the qx// operator). You can save some file manipulations if you don't write an intermediate file and then rename and modify it. User input can be read from STDIN. Here's a sketch,

    for (1..25) { warn "File Exists: $_.txt\n" and next if -f "$_.txt"; print 'My prompt message: '; chomp(my $input = <STDIN>); open my $fh, '>', "$_.txt" or warn $! and next; open my $ph, '-|', $cmd, $input or warn $! and next; { local $_; while {<$ph>) { do_your_processing($_); print $fh $_ or die $!; } } }
    You should see that this needs to be fleshed out by all your unspecified requirements.

    After Compline,
    Zaxo