Каково различие между Perl (или, и) и (||, &&) операторы короткого замыкания?

Различные IP-адреса любых двух (как рекомендуемый) или один веб-сервер являются проксированием реверса другой (который слушает на порте <> 80).

, Например: Apache слушает на порте 80, IIS на порте 8080. Каждый запрос HTTP переходит к Apache сначала (конечно). Можно тогда решить передать каждый запрос к детали (названный виртуальным) домен или каждый запрос, который содержит конкретный каталог (например, http://www.example.com/winapp/ ) к IIS.

Преимущество этого понятия состоит в том, что у Вас есть только один сервер, слушая общественность вместо два, Вы более гибки как с двумя отличными серверами.

Недостатки: некоторые веб-приложения являются разработанным crappily и реальная боль в заднице для интеграции в инфраструктуру обратную прокси. Рабочее веб-приложение IIS зависит от рабочего Apache, таким образом, у нас есть некоторые взаимозависимости.

30
задан brian d foy 3 October 2009 в 19:08
поделиться

5 ответов

Из-за низкого приоритета оператора 'or' , or3 выполняет синтаксический анализ следующим образом:

sub or3 {
    my ($a,$b) = @_;
    (return $a) or $b;
}

Обычный совет - использовать только оператор 'или' для потока управления:

@info = stat($file) or die;

Для получения дополнительной информации см. руководство по perl: http://perldoc.perl.org/ перлоп. html # Logical-or-and-Exclusive-Or

41
ответ дан 27 November 2019 в 23:34
поделиться

Какие эмпирические правила вы используете, чтобы решить, какую конструкцию использовать, и убедитесь, что код делает то, что вы думаете

Правила приоритета операторов .

|| связывается плотно, или связывается слабо. Не существует «практического правила».

Если у вас должно быть практическое правило, как насчет «использовать только или , когда нет lvalue»:

или :

open my $fh, '>', 'file' or die "Failed to open file: $!"

] || :

my $greeting = greet() || $fallback || 'OH HAI';

Я согласен с MJD насчет того, чтобы избегать паренсов; если вы не знаете правил, найдите их ... но не пишите (open (my $ fh, '>', 'file')) или (die ("Failed to open file: $ ! ")) " на всякий случай ", пожалуйста.

18
ответ дан 27 November 2019 в 23:34
поделиться

В Perl 5 "или" и "и" имеют более низкий приоритет, чем "||" а также "&&". Посетите эту ветку PerlMonks для получения дополнительной информации:

http://www.perlmonks.org/?node_id=155804

6
ответ дан 27 November 2019 в 23:34
поделиться

Обе версии сокращаются в Perl, но "текстовые" формы ("и" и "или") имеют более низкий приоритет, чем их эквиваленты в стиле C.

http: //www.sdsc.edu/~moreland/courses/IntroPerl/docs/manual/pod/perlop.html#Logical_And inventory

1
ответ дан 27 November 2019 в 23:34
поделиться

Я предполагаю, что or3 отличается.

Я не очень разбираюсь в Perl, но похоже, что 1, 2 и 4 все явно возвращают логические значения. Полагаю, у 3 есть побочные эффекты, такие как возврат $ a или что-то подобное.

смотрит вниз

Эй, я был прав.

1
ответ дан 27 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: