Надо отсортировать список файлов - вызвать внешнюю программу sort, на вход подать список файлов, а с выхода записать отсортированный список в файл.
Не хочу создавать кучу временных файлов:
print `sort file`;, а писать прямо на вход программы sort.
Пробовал:
open(SORT, "|sort");Так вот, выходной файл либо оказывается пустым, потому что программа sort вызывается только после закрытия дескриптора и весь результат ее работы почему-то выводится на экран). Пробовал pipe и запись в переменную, все равно выходной файл остается пустой.
#!/usr/bin/perl
$dir='/';
if ($ARGV[0]) { # если есть первый аргумент
$dir=`realpath $ARGV[0]`;
chomp $dir;
};
$listfiles=`mktemp /tmp/file.XXX`; chomp $listfiles;
open(FILES,"> $listfiles");# || die;
# сортировка списка файлов
open(SORT, "|sort|");# || die;
#open($f1, '>', \$variable);
until (eof `find $dir`) { print SORT `find $dir`};
until (eof SORT) { print FILES <SORT>; };
#pipe(`find $dir`,SORT);
#pipe(SORT,FILES);
#print SORT `cat /home/andrey/proba_files`;
#@s = `find $dir`;
#print SORT @s;
#print SORT `find $dir`;
#close SORT;
#until (eof SORT) { print FILES <SORT>; };
#close(FILES);
print "dir = $dir, listfiles = $listfiles\n";В Windows компьютер имеет вас!
