String perl:在散列值中使用逗号
我的键值对是“statement:test,data”,其中“test,data”是散列的值。在尝试使用这些值创建散列时,perl将逗号上的值拆分。有没有一种方法可以将带逗号的字符串用作值,除非您告诉Perl,否则它不会在逗号上拆分字符串String perl:在散列值中使用逗号,string,perl,hash,String,Perl,Hash,我的键值对是“statement:test,data”,其中“test,data”是散列的值。在尝试使用这些值创建散列时,perl将逗号上的值拆分。有没有一种方法可以将带逗号的字符串用作值,除非您告诉Perl,否则它不会在逗号上拆分字符串 #!/usr/bin/perl use v5.16; use warnings; use Data::Dump 'ddx'; my $data = "statement:test,data"; my %hash; my ($key, $value) =
#!/usr/bin/perl
use v5.16;
use warnings;
use Data::Dump 'ddx';
my $data = "statement:test,data";
my %hash;
my ($key, $value) = split(":", $data);
$hash{$key} = $value;
ddx \%hash;
给出:
# split.pl:14: { statement => "test,data" }
Perl中没有任何东西可以阻止您使用“test,data”作为散列值。 如果传入字符串的字面意思是“statement:test,data”,则可以使用以下代码添加到哈希中:
my ($key, $value) = ($string =~ /(\w+):(.*)/);
next unless $key and $value; # skip bad stuff - up to you
$hash{$key} = $value;
我怀疑这会分割价值。请出示一些代码<代码>%x=(语句=>'test,data')应该可以正常工作。