http://www.perlmonks.org?node_id=1003061


in reply to calling an exe and its input and target files

Inside "double quotes", the "\" character (which is the 'escape' character) needs to be escaped, using "\\".

So, your foreach should read:

foreach(@files) { system("c:\\midicsv\\midicsv.exe", "c:\\midicsv\\newmidi\\$_", "c:\ +\midicsv\\newcsv\\$_") }
This shows the mixing of a variable with a path, answering your first question.

For renaming files, you need to separate the pieces of the name, and replace the last piece.
This is typically done using regular expressions, but you can also use "split".

Here is a simplified example of replacing a trailing "csv" with "mid":

my $file = "C:\\temp\\somefile.csv"; my $midfile = $file; # copy it $midfile =~ s/\.csv$/.mid/i;

             "By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest."           -Confucius