По всему месту, особенно в DBI, я вижу, что это сообщение появляется постоянно. Это сбивает с толку, потому что первое, что приходит в голову, это то, что аргументы, передаваемые функцией, устанавливаются в undef (или что-то подобное), но это явно не так.
Учитывая модуль и соответствующий скрипт ...
Модуль: ./lib/My/Module.pm
package My::Module;
use strict;
use warnings;
sub trim {
my $str = shift;
$str =~ s{ \A \s+ }{}xms; # remove space from front of string
$str =~ s{ \s+ \z }{}xms; # remove space from end of string
return $str;
}
Сценарий: ./test.pl
#!/usr/bin/perl
use strict;
use warnings;
use My::Module qw(trim);
print $My::Module->trim(" \t hello world\t \t");
я возвращусь сообщение об ошибке,
Калифорния не вызывается метод «подрезать» на неопределенное значение в ./text.pl строке 7.
Infact, если я позвоню $My::Module->notamethod("hello world");
дает подобную ошибку.
Что случилось с вышеупомянутым скриптом/модулем?
Что это за ошибка Can't call method “X” on an undefined value at ${SOMEFILE} line ${SOMELINE}
действительно говорит? Это относится к контексту вызова метода (переданному здесь для печати) или контексту аргументов?
Я склонен вставлять их при написании регулярных выражений, потому что мне нравится добавлять комментарии в строку :). Я просто забыл взять их ради примера. – heymatthew
@ The Daemons Advocate,/s и/m не имеют никакого отношения к встроенным комментариям. Это/x. – cjm