如何从perl中的另一个文件中获取一个字符串,该文件包含在以前的文件中定义的变量

时间:2016-02-03 05:34:06

标签: perl

我不知道如何在句子中陈述问题。让我举一个例子:

有一个文件

  

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中进行插值而不是在同一个文件中?

1 个答案:

答案 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);