如何在perl中使用查找文本作为变量?

时间:2014-03-30 09:26:06

标签: regex perl

我在file1.pm文件中有变量     file1.pm

package oa;
use strict;
use warnings;
our $first1= 'DTH';
1;

现在想要在变量中访问这个变量,这是我的主程序,但我没有得到输出我知道问题是“oa:$ var” 我可以像这样使用“/ oa :: $ var /”来访问变量吗?

#!/usr/bin/perl
use file1;
$input='DTH';
$var=first . 1;
if($input =~ /oa::$var/){
print “DTH”;
}

1 个答案:

答案 0 :(得分:4)

Perl不是PHP,$ sigil位于包名称前面:如果要访问包变量,请执行$PackageName::var_name

./MyPackage.pm

package MyPackage;  # package names should be CamelCase!
use strict;
use warnings;

our $first1 = 'DHT';
1;

./script.pl

use strict;
use warnings;
use MyPackage;

my $input = 'DHT';
if ($input =~ /$MyPackage::first1/) {
    print "DHT\n";
}

但是,您还要按名称引用变量。这是一件坏事,并且几乎不可能理解和维护这样的程序。您可以改为使用哈希(也称为关联数组,地图或词典):

MyPackage

our %stuff = (
    first1 => 'DHT',
    other1 => 'foobar',
);

在剧本中:

my $var = 'first1';
if ($input =~ /$MyPackage::stuff{$var}/) {
    ...