Perl "Switch" захватывает строку case в документе HERE и запутывается? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть небольшой Perl-код с документом ЗДЕСЬ. Внутри текста ЗДЕСЬ есть ключевое слово case . Кажется, это сильно расстраивает оператор Switch . Я сумасшедший?

#!/usr/bin/perl

use strict;
use warnings;
use utf8;  # Meaning "This lexical scope (i.e. file) contains utf8"

use Switch;

sub printUsage {
   print STDERR << "HERE";

                       +
  --rollback           | - In case of "--reallydo", perform a ROLLBACK instead of a COMMIT at
                       |   transaction end.
                       + 
HERE
}

Запуск этого в Perl 5.16 дает:

Bad case statement (invalid case value?) near avo2.pl line 13

т.е.. In case of не ценится "здесь", в буквальном смысле. Какая-то ошибка? Должен ли я поднять это в Отслеживание ошибок Perl ?

1 Ответ

0 голосов
/ 12 ноября 2018

Не use Switch, если вы можете избежать этого, это исходный фильтр, и вы обнаружили одну из ошибок, скрывающихся в его глубинах. данный () / когда () был бы лучше, но это имеет проблемы и теперь помечено как экспериментальное. Если вам нужен эквивалент выражения case, попробуйте

for ($test_this) {
    if ( ! /\D/ ) {
        say 'is numbers';
        last;
    }
    if ( $_ eq 'exit' ) {
        say 'exit found';
        last;
    }
    if (/^\p{Lu}/) {
        say 'Upper case letter';
        last;
    }
    # Default option
    say 'Default';
    last;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...