«используйте Mojo::Base ‘Mojolicious::Plugin'» в чем смысл заключенного в кавычки оператора?

#perl

#perl

Вопрос:

Не мог бы кто-нибудь, пожалуйста, привести меня на информационную страницу, где я могу прочитать о том, как работает этот синтаксис и что он на самом деле делает? Например, в чем разница между… use Mojo::Base 'Mojolicious::Plugin'; и use Mojo::Base; ?

Я не совсем понимаю заключенную в кавычки 'Foo::Bar' часть, в приведенном выше примере 'Mojolicious::Plugin' часть.

Заранее благодарю вас.

Комментарии:

1. Смотрите документацию Mojo::Base

2. спасибо за ваш отзыв, но, к сожалению, это мне не поможет. вопрос не относится конкретно к MOJO, он просто касается синтаксиса «FOO::BAR ‘baz'». я знаю, для чего нужен FOO::BAR, но ‘baz’?

3. Смотрите документацию для использования СПИСКА модулей .

Ответ №1:

use Module::Name 'foo', 'bar' загрузит Module::Name модуль (как оператор времени компиляции), а затем вызовет его import метод, передающий список 'foo', 'bar' . Смотрите документацию по использованию и импорту. Модуль может определить ее импорт способ, чтобы сделать все, что он хочет, а экспортера — это распространенный способ сделать импорт способ, который экспортирует функции по имени.

В частности, для Mojo::Base его метод импорта при передаче имени класса настраивает текущий пакет как подкласс переданного имени класса. Он также выполняет множество других настроек по умолчанию, как задокументировано.

Ответ №2:

Смотрите документацию Mojo::Base. Я сам не использовал этот пакет, но, похоже, use Mojo::Base 'Mojolicious::Plugin' это ярлык для следующего кода:

 use strict;
use warnings;
use utf8;
use feature ':5.10';
use mro;
use IO::Handle ();
require Mojolicious::Plugin;
push @ISA, 'Mojolicious::Plugin';
sub has { Mojo::Base::attr(__PACKAGE__, @_) }
  

Комментарии:

1. спасибо, значит, в vanilla perl после «использовать FOO::BAR » никогда не стоит «‘baz’ «?

2. Да, это может быть, например, use List::Util 'max' импортировать max подпрограмму из List::Util