perl:在哈希值中使用逗号

时间:2012-10-17 09:38:32

标签: string perl hash

我将键值对作为“statement:test,data”,其中'test,data'是hash的值。在尝试使用这些值创建哈希时,perl会分割逗号上的值。有没有办法解决这个问题,其中带逗号的字符串可以用作值

2 个答案:

答案 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" }