Скачать с помощью wget в Perl
Новичок в Perl, надеюсь, кто-то может объяснить следующие вопросы, связанные с этим кодом:
$url ="some url";
open FH, "wget -q -O- $url|" or die;
while(<FH>){
...
}
- что значит второй
-
в-O-
имею в виду? - что это
|
в$url |
имею в виду? - Я попытался сделать поиск с 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
процесс, и вы можете прочитать его вывод.
Поиск имеет смысл для файлов на диске, но не для каналов. Вывод производится по мере выполнения программы, поэтому невозможно "прыгнуть в будущее".