В чем разница между библиотечными файлами и модулями? - PullRequest
9 голосов
/ 16 июня 2011

В чем разница между библиотечными файлами и модулями в Perl?

Ответы [ 3 ]

14 голосов
/ 17 июня 2011

Это все Perl-код для perl.Все различия чисто идиоматические.

Код Perl, предназначенный для включения и использующий директиву package:

  • Вызывается «модуль».
  • Обычно имеет расширение .pm.Должно быть это расширение для use, чтобы найти их.
  • Всегда должно быть загружено require, возможно через use.
  • Более модульный, лучше поддерживаемый CPAN.

Код Perl, предназначенный для включения без директивы package:

  • Вызывается "библиотека".
  • Обычно имеет расширение .pl.
  • Всегда должно быть загружено do.
  • Загрязняет пространство имен вызывающего абонента.
  • Обычно показателен некачественный дизайн. Избегайте этих!

Код Perl, предназначенный для непосредственного выполнения интерпретатором:

  • Вызывается "script".
  • Обычно имеютдобавочный номер .pl, или его вообще нет.
  • Вероятно, начнется с линии шебанга (#!), поэтому их можно запускать без указания perl.
7 голосов
/ 16 июня 2011

Библиотечные файлы (я предполагаю, что вы имеете в виду require 'foo.pl' материал здесь) являются устаревшей (до Perl 5) формой внешнего модуля. По большей части вам не нужно больше заботиться, хотя все еще содержат некоторые установки Perl 4 и, следовательно, все еще имеют некоторый код Perl, который остается обратно совместимым с ними (и есть код, который просто никогда не будет был обновлен и все еще загружает getcwd.pl и т. д.).

0 голосов
/ 16 июня 2011

Ничего.Оба файла содержат Perl-код.Вот некоторые из возможных косвенных отличий.

  1. Исполняемый файл perl с большей вероятностью будет иметь #!/bin/perl shbang.
  2. Старые .pl библиотеки Perl (следовательно, 'p' + 'l'), скорее всего, будут обязательными , чем .pm модулей.
  3. Модули Perl 5 style (.pm) болееможет использовать Exporter - хотя еще более новый модуль избегает экспорта чего-либо.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...