Проблема в том, что с синтаксисом 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');
Элементы индексированных коллекций (массивы, списки и карты) могут указываться индексом только в предложении where:
blockquote>String stateSentence = "AND state <> '"; String sqlUpdateLinkDetailed = "UPDATE PaymentRequestLink ld SET state='EXPIRED' " + "WHERE extraParameters['EXPIRATION_DATE'].value <= ? " + stateSentence + PaymentRequestLinkState.PAID;
См. документацию по выражениям HQL для деталей.