我不知道如何在句子中陈述问题。让我举一个例子:
有一个文件
abc.pl
它的内容如下:
use def;
my $log = $def::logs;
my $text = "this is the text to be searched with value123";
my $var = "value123";
my $findstring = $log->{'search'};
&find("$text","findstring ");
现在提交def.pm文件,在上面的文件中使用:
package def;
our $logs = {
'search' => "text to be searched with $var"
};
在这个文件中我应该如何给出$ var,以便在文件abc.pl中进行插值而不是在同一个文件中?
答案 0 :(得分:1)
字符串在定义时是互操作的。在使用包的情况下,这将在编译时发生。您需要做的是确保字符串定义延迟到设置$ var之后。
例如,这是一种方式。
package Def;
use strict;
our $logs = {
'search' => sub {
my ($var) = @_;
return "text to be search with $var";
}
};
然后你可以像这样使用它。
use def;
use strict;
my $log = $def::logs;
my $text = "this is the text to be searched with value123";
my $var = "value123";
my $findstring = $log->{'search'}->($var);
find($text, $findstring);