Запрос гибернации для объекта со свойством карты

Проблема в том, что с синтаксисом MyUtil->get_header() вы вызываете get_header() как метод класса. Этот вызов преобразуется в MyUtil::get_handler('MyUtil', 'foo'), и вам нужно принять во внимание этот дополнительный аргумент, который передается вашей подпрограмме.

sub get_header {
  my $class = shift; # Get class name
  my ($msg) = @_;    # Get message

  return " ===== $msg ===== ";
}

Если вы не собираетесь, чтобы get_header() был методом класса , то не называйте его как метод класса. Если вы называете это MyUtil::get_header('foo'), то ваш существующий код модуля будет работать нормально.

В качестве альтернативы вы можете «экспортировать» свою подпрограмму из вашего модуля в вызывающий пакет. Вы можете сделать это, добавив следующие две строки в ваш пакет:

use Exporter;
our @EXPORT = qw[get_header];

Затем из основной программы вы сможете вызвать экспортированную подпрограмму без упоминания ее имени пакета вообще.

get_header('foo');
3
задан Rafael 18 January 2019 в 20:15
поделиться

1 ответ

Элементы индексированных коллекций (массивы, списки и карты) могут указываться индексом только в предложении where:

String stateSentence = "AND state <> '";
String sqlUpdateLinkDetailed =  "UPDATE PaymentRequestLink ld SET state='EXPIRED' " +
            "WHERE extraParameters['EXPIRATION_DATE'].value <= ? " +
            stateSentence + PaymentRequestLinkState.PAID;

См. документацию по выражениям HQL для деталей.

0
ответ дан Selaron 18 January 2019 в 20:15
поделиться
Другие вопросы по тегам:

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