Как включить пользовательскую функцию сортировки в модуль?
Например, если я создаю следующий скрипт (test.pl):
#!/usr/bin/perl
use 5.022;
use warnings;
use diagnostics;
use utf8;
use open qw(:std :utf8);
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
sub mysort {
return $a cmp $b;
}
my @list = ('a', 'd', 'b', 'c');
say join "\n", sort mysort @list;
Он работает нормально.Однако, когда я разделяю их на test.pl:
#!/usr/bin/perl
use 5.022;
use warnings;
use diagnostics;
use utf8;
use open qw(:std :utf8);
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
use my::module;
my @list = ('a', 'd', 'b', 'c');
say join "\n", sort mysort @list;
и my / module.pm:
package my::module;
use 5.022;
use warnings;
use diagnostics;
use utf8;
use open qw(:std :utf8);
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
BEGIN {
my @exp = 'mysort';
require Exporter;
our $VERSION = 1.00;
our @ISA = 'Exporter';
our @EXPORT = @exp;
our @EXPORT_OK = @exp;
}
sub mysort {
return $a cmp $b;
}
1;
, я получаю следующее сообщение об ошибке: Использование неинициализированного значения $ my:: module :: a в сравнении строк (cmp) в строке my / module.pm 20 (# 1) (W не инициализирован) Неопределенное значение использовалось так, как если бы оно уже было определено.Это интерпретировалось как "" или 0, но, возможно, это было ошибкой.Чтобы подавить это предупреждение, присвойте переменным определенное значение.
To help you figure out what was undefined, perl will try to tell you
the name of the variable (if any) that was undefined. In some cases
it cannot do this, so it also tells you what operation you used the
undefined value in. Note, however, that perl optimizes your program
and the operation displayed in the warning may not necessarily appear
literally in your program. For example, "that $foo" is usually
optimized into "that " . $foo, and the warning will refer to the
concatenation (.) operator, even though there is no . in
your program.
Использование неинициализированного значения $ my :: module :: b в сравнении строк (cmp) в строке my / module.pm 20 (# 1))
Есть ли способ экспортировать переменные $ a и $ b в модуль?