如何使用字符串索引索引到2d数组

时间:2014-01-20 20:37:47

标签: perl multidimensional-array grep

所以我对设置和使用我的数据结构的最有效方法有几个问题。

首先,我有[header1 string1.1 string1.2 .. string1.n header2 string2.1 .. string2.n ...]形式的一维字符串数组。我想设置一个2d数组,其中每个stringX.Y有4个与之关联的整数。

e.g。

header1
string1.1 0 0 0 0
string2.1 0 0 0 0

header2
string2.1 0 0 0 0
...
  1. 如果我已经拥有1D字符串数组,那么设置它的最佳方法是什么(初始化为0)?
  2. 如何按字符串索引2D数组?
  3. 然后我需要grep多个文件path1/foo* path2/foo*并使用主master_search_string结合上面的字符串索引。然后我将根据我期望的硬编码字符串将其分解为4个桶(例如foo bar baz other

    我的原始(修改)内核如下:

    for item in $list;
    do
        s1=`grep -P "bucket1:.*$item" $path | wc -l`
        s2=`grep -P "bucket2:.*$item" $path | wc -l`
        s3=`grep -P "bucket3:.*$item" $path | wc -l`
        s4=`grep -P "bucket4:.*$item" $path | wc -l`
        echo "$item $s1 $s2 $s3 $s4" >> $outFile
    done
    

1 个答案:

答案 0 :(得分:0)

我最终回到原始文件并保持字符串列表分开(例如string1.* string2.*等)。这些是哈希,所以我创建了一个哈希引用数组。要将散列中存储的每个值从标量更改为我所做的数组(为简单起见而修改):

my %full_list;
@list = \(%string1, %string2, %string3);
foreach (0 .. $#list) {
    my $temp_list = $list[$_];
    foreach my $key (sort keys %$temp_list){
        delete $temp_list->{$key};
        $temp_list->{$key} = [0,0,0,0]; #this creates a list reference, but not sure if I am doing this the best way
        $full_list{$key} = $temp_list->{$key}; #creates a shallow copy so I can index the arrays with either the full_list by index
    }
}

最后一行代码解决了我的第二个问题。要索引数组,我们可以$full_list{$key}[0]

** 我的代码中可能存在拼写错误,因为它是我实际执行的简化版本。