【发布时间】:2012-10-07 12:54:16
【问题描述】:
我有键值对作为“语句:测试,数据”,其中“测试,数据”是哈希值。在尝试使用这些值创建散列时,perl 将值拆分为逗号。有没有办法解决这个问题,可以将带逗号的字符串用作值
【问题讨论】:
-
我怀疑它会分割价值。请显示一些代码。
%x = ( statement => 'test,data')应该可以正常工作。
我有键值对作为“语句:测试,数据”,其中“测试,数据”是哈希值。在尝试使用这些值创建散列时,perl 将值拆分为逗号。有没有办法解决这个问题,可以将带逗号的字符串用作值
【问题讨论】:
%x = ( statement => 'test,data') 应该可以正常工作。
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;
【讨论】: