Почему LWP :: UserAgent импортируется по требованию LWP :: UserAgent вместо использования LWP :: UserAgent? - PullRequest
1 голос
/ 29 июня 2011

Я довольно новичок в этом языке, но я использовал use для импорта определенного модуля раньше,

, почему LWP::UserAgent использует require для выполнения работы начиная с perldoc LWP::UserAgent:

require LWP::UserAgent;

Ответы [ 3 ]

3 голосов
/ 29 июня 2011
use LWP::UserAgent;

совпадает с

BEGIN {
    require LWP::UserAgent;
    import LWP::UserAgent;
}

Если допустимо require LWP::UserAgent;, это означает, что import ничего не делает для LWP :: UserAgent.Может быть, смысл использования require документации состоит в том, чтобы тонко подразумевать это?

Единственное различие между require LWP::UserAgent; и use LWP::UserAgent;, таким образом, заключается в том, что require выполняется.В первом случае это происходит после компиляции всего файла.Для последнего это происходит, как только это утверждение было скомпилировано.С практической точки зрения, нет большой разницы для объектно-ориентированных модулей.

Лично я использую

use LWP::UserAgent qw( );

Это то же самое, что

BEGIN {
    require LWP::UserAgent;
}

Таким образом, яЯ гарантированно не импортирую то, что мне не нужно, и я использую знакомые use, которые я использую для других модулей.

1 голос
/ 29 июня 2011

require Module :: Name имеет тот же эффект, что и use, только во время выполнения, а не во время компиляции.Иногда это выгодно, когда вы хотите условно потребовать модуль.Я не думаю, что есть какая-то конкретная причина для того, чтобы документ сказал, что требуется вместо использования.

0 голосов
/ 10 октября 2012

Это не идеальный ответ, но, возможно, поможет кто-то, кто пришел из Google как я.

Для сообщения об ошибке: LWP :: UserAgent не найден в строке ./apache_accesses 86.

Решение: apt-get install libwww-perl

...