我将键值对作为“statement:test,data”,其中'test,data'是hash的值。在尝试使用这些值创建哈希时,perl会分割逗号上的值。有没有办法解决这个问题,其中带逗号的字符串可以用作值
答案 0 :(得分:5)
Perl中没有任何内容阻止您使用'test,data'作为哈希值。 如果您的传入字符串字面上是“statement:test,data”,则可以使用此代码添加到hash:
my ($key, $value) = ($string =~ /(\w+):(.*)/);
next unless $key and $value; # skip bad stuff - up to you
$hash{$key} = $value;
答案 1 :(得分:3)
除非你告诉它,否则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" }