私はWindows(アクティブPerl)でPerlを使用しています。私は現在のフォルダ内のファイルをグロブし、system()を使用して内部から呼び出されたdoscopyコマンドを使用してそれらすべてを連結するperlプログラムを持っています...
実行すると、「システムは指定されたファイルを見つけることができません」というdosエラーが発生します。それは私が持っているファイル名のスペースに関連しています。
これはperlコードです:-
@files = glob "*.mp3";
$outfile = 'final.mp3';
$firsttime = 1;
foreach (@files)
{
if($firsttime == 1)
{
@args = ('copy' ,"/b ","$_","+","$outfile", "$outfile");
system (@args);
#system("copy /b '$_'+$outfile $outfile");
$firsttime = 0;
}
else
{
@args = ('copy' ,"/b ","$outfile","+","$_", "$outfile");
system (@args);
#system("copy /b $outfile+'$_' $outfile");
}
}
globは、現在のフォルダー内のファイル名の配列を返します。これらのファイル名の間にスペースがあるため、配列要素の間にスペースがあります。上記のようにsystem(...)を使用して、これらの配列要素に対して「$ _」を使用してコピーコマンドを実行すると、上記のようにエラーが発生します。
システムを呼び出すことができるいくつかの方法を試しましたが(...)、成功しませんでした。
私が知りたいのですが、
1]上記のコードを使用して、間にスペースがあるファイルでこれを機能させるにはどうすればよいですか。ファイル名の空白を「エスケープ」する方法。
2]同じことを達成するためのPerlの代替ソリューション。(簡単なものは大歓迎です。)