我有一个字符串如下:
$var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
我想得到not和at values ..如何使用它?
答案 0 :(得分:5)
您可以并且可能应该使用可以正确解析此字符串的正确模块,例如URI
和URI::QueryParam
:
use strict;
use warnings;
use URI;
use URI::QueryParam;
my $str = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
my $url = URI->new($str);
my $not = $url->query_param('not');
my $at = $url->query_param('at');
print Dumper $not, $at;
<强>输出:强>
$VAR1 = '1234';
$VAR2 = '6789';
答案 1 :(得分:2)
最简单的事情可能是将所有值一次性拉入哈希值:
my $var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
my %values = $var =~ /(\w+)(?:=(.*?))?(?:&|\Z)/g;
在此之后,你有
DB<5> x \%values
0 HASH(0x7fa133018f98)
'LMN' => undef
'at' => 6789
'not' => 1234
'xyz' => undef
答案 2 :(得分:0)
您可以尝试使用正则表达式来提取匹配项:
my $var = "ABC/type.xml/BYB?not=1234&at=6789&xyz&LMN";
$var=~/not=(.*?)&/;
my $a=$1;
$var=~/at=(.*?)&/;
my $b=$1;
say $a,",",$b;
输出:
1234,6789