Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在perl中使用find text作为变量?_Regex_Perl - Fatal编程技术网

Regex 如何在perl中使用find text作为变量?

Regex 如何在perl中使用find text作为变量?,regex,perl,Regex,Perl,我在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 “D

我在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”;
}

Perl不是PHP,包名前面有
$
符号:如果要访问包变量,请执行
$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}/) {
    ...

Perl不是PHP,包名前面有
$
符号:如果要访问包变量,请执行
$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}/) {
    ...

我可以这样声明“use D:/myfiles/MyPackage”@Kathir.K否,
use
操作符获取一个包名,然后搜索文件本身。但是您可以通过
use lib'D:/myfiles/'
添加新的搜索位置,然后
use MyPackage
将找到
D:/myfiles/MyPackage.pm
.pm
扩展名很重要。或者,您可以手动加载一个文件:
开始{require'D:/some/path';MyPackage->import}
需要
可以加载任何文件名。
->import
调用包名(而不是文件名)对于确保正确初始化很重要。
开始{…}
使所有这些都在编译时发生,就像
use
works一样。为什么我不能在mydatabase中打印文本,我使用的打印方式是“$MyPackage::stuff{$var}”;但不起作用。我可以这样声明“use D:/myfiles/MyPackage”吗@Kathir.K否,
use
操作符获取包名,然后搜索文件本身。但是您可以通过
use lib'D:/myfiles/'
添加新的搜索位置,然后
use MyPackage
将查找
D:/myfiles/MyPackage.pm
.pm
扩展名很重要。或者,您可以手动加载一个文件:
开始{require'D:/some/path';MyPackage->import}
需要
可以加载任何文件名。
->import
调用包名(而不是文件名)对于确保正确初始化很重要。
开始{…}
使所有这些都在编译时发生,就像
use
works一样。为什么我不能在我的数据库中打印文本,我使用的打印方式是“$MyPackage::stuff{$var}”;但不起作用。