В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
На Unix:
обычно Вы запускаете cpan в Вашей оболочке:
# cpan
и тип
install Chocolate::Belgian
или в краткой форме:
cpan Chocolate::Belgian
В Windows :
при использовании ActivePerl в Windows, страница в минуту (Диспетчер пакетов Perl) имеет большую часть той же функциональности как CPAN.pm.
Пример:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
видят , Как я устанавливаю модули Perl? в CPAN FAQ
Много дистрибутивов поставляют много модулей жемчуга как пакеты.
apt-cache search 'perl
pacman -Ss '^perl-'
dev-perl
Вы должны всегда , предпочитают их, поскольку Вы извлекаете выгоду из автоматического (безопасность) обновления и простота [1 141] удаление . Это может быть довольно хитро с сам инструмент cpan .
Для хинду существует хороший инструмент, названный g-cpan, который создает/устанавливает модуль из CPAN и создает хинду пакет ( ebuild) для Вас.
pacman -Ss '^perl-'
dev-perl
Вы должны всегда , предпочитают их, поскольку Вы извлекаете выгоду из автоматического (безопасность) обновления и простота [1 141] удаление . Это может быть довольно хитро с сам инструмент cpan .
Для хинду существует хороший инструмент, названный g-cpan, который создает/устанавливает модуль из CPAN и создает хинду пакет ( ebuild) для Вас.
В Windows с распределением ActiveState Perl используйте команда ppm.
На Fedora можно использовать
# yum install foo
, пока Fedora имеет существующий пакет для модуля.
2 способа, о которых я знаю:
ИСПОЛЬЗУЯ PPM:
С [1 117] Windows (ActivePerl) I использовали ppm
от типа командной строки ppm. При подсказке ppm...
ppm> install foo
или
ppm> search foo
для получения списка доступных модулей нечто. Справка типа для всех команд
ИСПОЛЬЗУЯ CPAN:
можно также использовать CPAN как это ( *nix системы ):
perl -MCPAN -e 'shell'
получает Вас подсказка
cpan>
при подсказке...
cpan> install foo (again to install the foo module)
тип h для получения списка команд для cpan
Много рекомендации для CPAN.pm
, который является большим, но если Вы используете Perl 5.10
тогда, Вы также получили доступ к CPANPLUS.pm
, который похож CPAN.pm
, но лучше.
И, конечно, это доступно на CPAN
людям, все еще использующим более старые версии Perl. Почему бы не попробовать:
$ cpan CPANPLUS
Также см. Да, даже можно использовать CPAN. Это показывает, как можно использовать CPAN, не имея корня или sudo доступа.
Otto сделал хорошее предложение . Это работает на Debian также, а также любую другую производную Debian. Недостающая часть - то, что сделать, когда поиск способного кэша не находит что-то.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Тогда каждый раз, когда у Вас есть случайный модуль, Вы хотите установить:
$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
Это даст Вам deb пакет, который можно установить для получения Некоторых:: Случайный:: Модуль. Одно из больших преимуществ здесь является страницами справочника, и демонстрационные сценарии в дополнение к самому модулю будут помещены в предпочтительное местоположение Вашего дистрибутива. Если дистрибутив когда-нибудь выпускает официальный пакет для более новой версии Некоторых:: Случайный:: Модуль, это будет автоматически установлено, когда Вы склонный - получите обновление.
Несколько человек упомянули cpan утилиту, но она больше, чем только запускает оболочку. Просто дайте ему модули, которые Вы хотите установить, и позволять ему сделать это - работа.
$prompt> cpan Foo::Bar
, Если Вы не даете ему аргументов, это запускает оболочку CPAN.pm. Это работает над Unix, Mac, и должно быть очень хорошо в Windows (особенно Земляничный Perl).
существует несколько других вещей, которые можно сделать с cpan инструментом также. Вот сводка текущих функций (который мог бы быть более новым, чем тот, который идет с CPAN.pm и жемчугом):
-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [ module ... ]
Shows the primary maintainers for the specified modules
-C module [ module ... ]
Show the Changes files for the specified modules
-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.
-L author [ author ... ]
List the modules by the specified authors.
-h
Prints a help message.
-O
Show the out-of-date modules.
-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-v
Print the script version and CPAN.pm version.
Если Вы находитесь на Ubuntu, и Вы хотите установить предварительно упакованный модуль жемчуга (например, гео-:: ipfree), пробуют это:
$ apt-cache search perl geo::ipfree libgeo-ipfree-perl - A look up country of ip address Perl module $ sudo apt-get install libgeo-ipfree-perl
Я отмечаю некоторых людей, предлагающих один выполненный cpan под sudo. Это раньше было необходимо для установки в системный каталог, но современные версии оболочки CPAN позволяют Вам настраивать его для использования sudo всего для установки. Это намного более безопасно, так как это означает, что тесты не работают как корень.
, Если у Вас есть старая оболочка CPAN, просто установите новый cpan ("устанавливают CPAN"), и когда Вы перезагружаете оболочку, это должно предложить Вам настраивать эти новые директивы.
В наше время, когда я нахожусь в системе со старым CPAN, первая вещь, я делаю обновить оболочку, и настраивать его, чтобы сделать это так я могу сделать большую часть своей работы cpan как обычный пользователь.
кроме того, я настоятельно рекомендовал бы, чтобы пользователи Windows занялись расследованиями земляника Perl . Это - версия Perl, который прибывает упакованный с предварительно сконфигурированной оболочкой CPAN, а также компилятором. Это также включает некоторые твердые к компиляции модули Perl с их внешними зависимостями библиотеки C, особенно XML:: Синтаксический анализатор. Это означает, что можно сделать то же самое как любой пользователь Perl когда дело доходит до установки модулей, и вещи склоняются к "просто работе" намного чаще.
Безопасное решение
Много ответов упоминают использование cpan
утилита (который использует CPAN.pm
), без слов на безопасности. По умолчанию, CPAN
2.27 и ранее настраивает urllist
для использования http URL (а именно, http://www.cpan.org/ ), который позволяет нападения на MITM, таким образом небезопасно. Это - то, что используется для загрузки эти CHECKSUMS
файлы, так, чтобы это было изменено на безопасный URL (например, https://www.cpan.org / ).
Так, после выполнения cpan и принятия конфигурации по умолчанию, необходимо изменить сгенерированный MyConfig.pm
файл (полный путь производится), следующим образом. Замена
'urllist' => [q[http://www.cpan.org/]],
[1 115]
'urllist' => [q[https://www.cpan.org/]],
Примечание: https не достаточен; Вам также нужен веб-сайт, которому можно доверять. Так, будьте осторожны, если Вы хотите выбрать некоторое произвольное зеркало.
Тогда можно использовать cpan
обычным способом.
Мой отчет об ошибках на rt.cpan.org о небезопасном URL.
Попробуйте App::cpanminus:
# cpanm Chocolate::Belgian
Это отлично подходит для простой установки программ. Он не предоставляет более сложных функций CPAN или CPANPLUS, поэтому его легко использовать, если вы знаете, какой модуль вы хотите установить. Если у вас еще нет cpanminus, просто введите:
# cpan App::cpanminus
чтобы установить его.
Его также можно установить вообще без использования cpan. Основная процедура начальной загрузки следующая:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Для получения дополнительной информации перейдите на страницу App::cpanminus и просмотрите раздел об установке.