Cra*_*aig 3 arrays string perl split
我从一个文本文件中读取了一个字符串,这相当于我用以下格式声明它:
$string = '["Item1_Field1","Item1_Field2","Item1_Field3"],["Item2_Field1","Item2_Field2","Item2_Field3"],["Item3_Field1","Item3_Field2","Item3_Field3"],["Item4_Field1","Item4_Field2","Item4_Field3"]';
Run Code Online (Sandbox Code Playgroud)
(实际的字符串包含大约600个项目和大约50个字段)我要做的是获取是项目和字段的二维(嵌套)数组,以便我可以使用以下内容引用它们:
print $ItemsAndFields[1][2]
Run Code Online (Sandbox Code Playgroud)
这将导致(允许从零开始的数组):
Item2_Field3
Run Code Online (Sandbox Code Playgroud)
我发现字符串的格式与你在Perl中声明一个数组的格式非常相似,所以我希望有类似下面的内容允许我直接将项目分配给一个数组:
@ItemsAndFields = magicfunction( $string );
Run Code Online (Sandbox Code Playgroud)
但我找不到任何合适的东西,允许我以这种方式使用字符串.
我可以看到这样做的唯一方法是使用split函数两次来创建这个数组的数组.以下是未经测试的,只是我头脑中正在进行的工作:
$string =~ s/\[//g;
my @items = split(/\],*/, $string);
my @ItemsAndFields = split(/\,/, $string);
Run Code Online (Sandbox Code Playgroud)
我尝试查看eval()函数,使用{}引用以及搜索此站点,但很难知道我需要搜索什么.
任何帮助表示赞赏,我是Perl的新手.
my $arrayRef = eval "[$string]";
Run Code Online (Sandbox Code Playgroud)
会给你:
$arrayRef = [
[
'Item1_Field1',
'Item1_Field2',
'Item1_Field3'
],
[
'Item2_Field1',
'Item2_Field2',
'Item2_Field3'
],
[
'Item3_Field1',
'Item3_Field2',
'Item3_Field3'
],
[
'Item4_Field1',
'Item4_Field2',
'Item4_Field3'
]
];
Run Code Online (Sandbox Code Playgroud)
你可以这样访问:
my $item2Field3 = $arrayRef->[1]->[2];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |