String 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) =

我的键值对是“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) = 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')应该可以正常工作。