Обычно вы используете вызов массива system
, чтобы избежать оболочки, но у вас есть перенаправление ввода / вывода в команде, с которой трудно справиться.OTOH, sort
позволяет указать выходной файл с помощью -o
, и указанный файл может быть одним из входных данных (хотя его здесь не будет):
my @cmd = ( "sort", "-k8", "-rn", "-t", "\t", "-o", "out.txt", "in.txt" );
system(@cmd);
Оболочка невызывается;вкладка не повреждена.Я объединил опции -r
и -n
в одну;Вы можете оставить их отдельно, если хотите, или (в крайнем случае) добавить их после опции -k8
.