2012-10-17 55 views
0

我有鍵值對作爲「語句:測試,數據」其中'測試,數據'是哈希值。在嘗試使用這些值創建散列時,perl將逗號分隔值。是否有解決此問題的方法,其中可以使用帶逗號的字符串作爲值perl:在哈希值中使用逗號

+3

我懷疑它將該值。請顯示一些代碼。 '%x =(statement =>'test,data')'應該可以正常工作。 – Thilo

回答

3

除非您告訴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" } 
5

沒有什麼用Perl阻止你使用 '測試,數據' 作爲哈希值。 如果您收到的字符串字面意思是「聲明:測試數據」,您可以使用此代碼添加到哈希:

my ($key, $value) = ($string =~ /(\w+):(.*)/); 
next unless $key and $value; # skip bad stuff - up to you 
$hash{$key} = $value;