在perl中查找子字符串

时间:2012-11-11 12:41:04

标签: perl xml-parsing

我想检查字符串是否存在于xml标记

和xml标签采用以下格式。

<admin var="s_admin">xyz</admin>

我试过

index($xmlString,$str) != -1

但它不适合我。这是我的代码:

my $hostname = hostname;
my $wlsadmin = grep s_wls_admin_host $ENV{CONTEXT_FILE};
$wlsadmin=~s/^\s+|\s+$//g;
if(index($wlsadmin,$hostname) != -1) {
    print("True");
}
print($hostname);
print($wlsadmin);

这是print语句的值:

 rws3510357 <wls_admin_host oa_var="s_wls_admin_host">rws3510357</wls_admin_host>

1 个答案:

答案 0 :(得分:1)

正如其他人所评论的那样,我并不确定你出了什么问题,但这是一个使用基于DOM的XML解析器来查找标签并提取其内容的示例。从那里可以轻松地将这些内容与某些字符串进行比较,就像使用index一样。

#!/usr/bin/env perl

use strict;
use warnings;

use Mojo::DOM;
my $dom = Mojo::DOM->new(<<'END');
<wls_admin_host oa_var="s_wls_admin_host">rws3510357</wls_admin_host>
END

my $hostname = 'rws3510357';

my $wlsadmin = $dom->at('wls_admin_host')->text;

if (index($wlsadmin, $hostname) != -1 ) {
  print "True\n";
}