Скачать с помощью wget в Perl

Новичок в Perl, надеюсь, кто-то может объяснить следующие вопросы, связанные с этим кодом:

$url ="some url";
open FH, "wget -q -O- $url|" or die;  
while(<FH>){  
  ...  
}  
  1. что значит второй - в -O- имею в виду?
  2. что это | в $url | имею в виду?
  3. Я попытался сделать поиск с FH, как это:
 $url ="some url";
 open FH, "wget -q -O- $url|" or die;  
 seek(FH, 14000, 1);  

но если я повторю позицию с echo tell(FH), Я получаю 0, кто-нибудь знает, почему я не могу искать FH? Спасибо

3 ответа

Решение

-O- аргумент говорит wget выводить на стандартный вывод (т.е. на вашу консоль / терминал), а не в файл.

Труба в открытом вызове - это труба открытая. Дескриптор файла будет связан с выводом процесса (в этом случае к чему wget выходы).

tell Вызов этого типа дескриптора файла не имеет смысла. В основе лежит поток, а не файл. tell может возвращать разные вещи в потоках, это зависит от ОС.

что означает второе - в-о-?

От man wget

Документы не будут записаны в соответствующие файлы, но все будут объединены и записаны в файл. Если - используется как файл, документы будут напечатаны на стандартный вывод, отключив преобразование ссылок. (Используйте./- для печати в файл с буквальным названием -.)


что делает | в $url | имею в виду?

Это не в $url, это после него.

Из perldoc для открытого

если имя файла заканчивается на "|" имя файла интерпретируется как команда, которая передает нам вывод

Второй - означает, что вы хотите wget для вывода на стандартный вывод, а не в файл. | означает, что вы открываете канал для вновь созданного wget процесс, и вы можете прочитать его вывод.

Поиск имеет смысл для файлов на диске, но не для каналов. Вывод производится по мере выполнения программы, поэтому невозможно "прыгнуть в будущее".

Другие вопросы по тегам