2016-03-03 3 views
1

Каков эффект этого в начале сценария perl?Эффект использования Кодировка qw/encode decode from_to/;?

use Encode qw/encode decode from_to/; 

Я нашел это по коду, который я взял, но я не знаю, что он делает.

+0

Кодировки символов, по-видимому: [Кодировка] (http://perldoc.perl.org/Encode.html). Основной модуль тоже. – zdim

ответ

0

Краткая история: для опытного Perl кодированной кто знает, что модули: Encode модуль для преобразования перл строк в «другой» формат (для которого существует множество суб-модулей, которые определяют разностные форматы). Как правило, он используется для преобразования и из форматов Unicode например:

... to convert a string from Perl's internal format into ISO-8859-1, also known as Latin1: 
    $octets = encode("iso-8859-1", $string); 

decode для идти в другую сторону, и from_to преобразует строку из одного формата в другой на месте;

from_to($octets, "iso-8859-1", "cp1250"); 

Длинная история: для кого-то, кто не знает, какой модуль/делает: Это классический способ один использует код из других источников. «В другом месте» обычно означает одну из двух возможностей;

  1. Код, написанный «на дому» - то есть: часть вашего частного приложения, которое прошлый разработчик решил исключить (предположительно), потому что он применим в нескольких местах/приложениях; или
  2. Код, написанный за пределами организации и доступны публично, как правило, от the Comprehensive Perl Archive Network - CPAN

Теперь, возможно, - но вряд ли - что кто-то в вашей организации была создана в доме-код и со-кстати использовал такое же имя для модуля CPAN, поэтому, если вы проверите CPAN, выполнив поиск «Кодировать» - вы можете видеть, что есть модуль этого имени - и это почти наверняка будет тем, что вы используете. Вы можете прочитать об этом here.

qw/.../ означает "котировочные слова" и представляет собой простую короткую руку для создания списка строк; в этом случае он переводится в («encode», «decode», «from_to»), который, в свою очередь, является спецификацией того, какие части модуля Encode вам (или оригинальному автору) нужны.

Вы можете прочитать о тех частях под заголовком «Основные методы» на странице документации (или «POD»), о которой я говорил ранее. Не откладывайте ссылку на «методы» - многие модули (и, похоже, это одно) написаны таким образом, что они поддерживают как объектно-ориентированный, так и функциональный интерфейс. В результате вы, вероятно, увидите прямые обращения к трем функциям, упомянутым ранее, как если бы они были написаны непосредственно в самой программе.

+0

Спасибо, эта информация полезна. Я не знал, что такое 'qw'. – CJ7