【发布时间】:2013-03-21 04:53:50
【问题描述】:
我一直在寻找解决我的问题的方法,在阅读了几篇文章后,哈希似乎是答案,但我不确定如何根据我的要求实现这个,有人可以建议如何甚至更好的选择吗?
在我的代码中,变量$host 是根据数据库中的值设置的。我循环遍历这些值,每次都会更改 $host 的值。
我想丢弃某些类型的主机名,并确定要丢弃哪些主机,我在一个用户可配置文件中读取,该文件包含该排除的 Perl 正则表达式。即配置文件有一行
EXCLUDE=\d+DAT\d+,\d+INF\d+
然后我想建立 Perl 正则表达式匹配(逻辑 OR),即
if ( $host =~ m/\d+DAT\d+/ || $host =~ m/\d+INF\d+/ ) {
# do something
}
目前我的代码与上面的示例一样是硬连接的,但是如何在读取配置文件后动态构建 Perl 正则表达式?
我已将配置文件读入一个数组,并将从那里开始。上面的代码需要这样结束:
if ($exclude clause) {
# do something
}
这就是我着手实现从数组中读取的方式:
for ($i = 1; $i < @conf; $i++) {
$exclude_clause .= "$host =~/" . @conf[$i] . "/ || ";
}
$exclude_clause =~ s/ \|\| $//;
问题是在$exclude_clause 中引用$host。除了$host,我的正则表达式字符串构建良好。
【问题讨论】:
-
到底是什么问题?这是您尝试运行的实际代码吗?
标签: perl variables hash reference