ここでランク初心者は優しくしてください... 特定のファイルタイプをすべて見つけて呼び出すプログラムと、ファイルタイプを変換する newstack という別のプログラムを perl で書いています。
newstack oldfileame newfilename
シェルから実行すると、正常に動作します。
私のプログラムがsystem("newstack oldfileame newfilename")
newstack を実行すると、エラーが返されます:
ERROR: NEWSTACK - NO INPUT FILE SELECTED
sh: line1: ./oldfilename: cannot execute binary file
同じことを行うシェル スクリプトを作成し、ファイルに対して一度に 1 つずつ newstack を実行すると、問題なく動作します。perl プログラムのコンテキスト内で実行すると失敗するのはなぜですか?
Newstack はIMODスイートのプログラムからのもので、何に書かれているのかわかりません。ファイルは、バイナリ イメージ ファイルである mrc ファイルです。
編集:: 要求された実際のコードは次のとおりです。
print "Enter the rootname of the files to be converted: ";
my $filename = <STDIN>;
chop $filename;
my @files = qx(ls $filename*.mrc);
open LOGFILE, (">modeconvert-log");
foreach my $mrc (@files)
{
print LOGFILE "$mrc";
system("newstack -mode 2 $mrc $mrc");
}
my $fileno = @files;
print "$fileno files converted\n";
8行目の後に追加chop $mrc
し、問題を修正しました