在Perl中拆分数组

时间:2015-02-04 10:19:46

标签: arrays perl

我是Perl的新手 我将下面的数据放入数组中,每个产品都是这个数组的值,

 print @array

 Product A
      Date=2.3.13
      Value=100
      Time=2.12

 Product B
      Date=4.5.12
      value=20
      Description=Goods

 Product C
      ...
      ...

这些产品可以从A更改为Z,它们的属性也可以更改,有些可以帮我获取以下格式的数据

 Product         Date      Value        Descrip      Time
 A               2.3.13    100          -Nil-        -Nil-
 B               4.5.12    20           Goods        

1 个答案:

答案 0 :(得分:-1)

根据作者和评论的其他意见,这里有一个更新的答案。

  1. 准备数据结构(哈希)以存储一个产品的数据。

  2. 通过解析连续的行,逐个读取产品文件。将一个产品的数据存储在内存中。

  3. 完成一个产品后立即打印数据(空行似乎是分隔符)。清除数据。重复。

  4. 总的来说,这看起来像这样:

    my $empty = {
        name => "",
        date => "",
        value => ""
        # etc
    };
    
    my $product = $empty;
    
    while (my $line = <$file>) {
        if ($line =~ m/^Product\s+(.*)$) {
            $product->{name} = $1;
        } elsif ($line =~ m/^\s+Date=(\d+\.\d+\.\d+)$/) {
            $product->{date} = $1;
        } elsif () {
            # etc.
        } elsif ($line eq "") {
            # Empty line
            print $product->{name} . "\t" . $product->{date} . "\n"; #etc
            # Clear the product data
            $product = $empty;
        }
    }