скачать с помощью wget в Perl - PullRequest
0 голосов
/ 25 апреля 2011

Новичок в 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 ]

2 голосов
/ 25 апреля 2011

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

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

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

1 голос
/ 25 апреля 2011

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

с man wget

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


что означает |в $ url |значит?

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

Из perldoc для open

, если имя файла оканчивается на '|'имя файла интерпретируется как команда, передающая нам выходные данные

0 голосов
/ 25 апреля 2011

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

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

...