2011-02-02 50 views
-2

您好所有我有xyz.txt将该具有以下信息文件我如何存储10秒内文件的内容在Perl

69013 1-3039-1 REGISTER 

69013 1-3039-1 100 


69013 1-3039-1 401 

69013 1-3039-2 REGISTER 

69013 1-3039-2 100 

69013 2-3039-1 REGISTER 

69013 3-3039-1 REGISTER 

69013 4-3039-1 REGISTER 

..................... 
..................... 

69023 213-3039-2 REGISTER 

69023 193-3039-2 100 

69023 193-3039-2 401 

69023 222-3039-1 REGISTER 

69023 177-3039-2 100 

69024 177-3039-2 401 

69024 214-3039-1 100 

69024 214-3039-1 401 

69024 214-3039-2 REGISTER 

其中第一coloumn是秒

我想存储第二coloumn每个不同的第三颜色

回答

0

这听起来不像我的想法问你想问什么,我想你想要的。因此,这是一个解决方案,以获得列2中列出的所有值。如果这不是您的意图,我表示歉意。

open(my $fh, '<', '/path/to/xyz.txt') or die "Did not open $!"; 
my %hash; 

while (<$fh>) { 
    next unless /\S/; 
    my (undef, $col2, $col3) = split ' ', $_, 3; 
    next unless $col3; 
    $hash{ $col3 }{ $col2 }++; 
} 

close $fh; 

此时,%hash将包含包含在第二作为键用连字符连接的数字散列值。

这将打印出值。

foreach my $key (sort keys %hash) { 
    my $h = $hash{ $key }; 
    foreach my $k (sort keys %$h) { 
     print "$key, $k\n"; 
    } 
} 
+0

感谢所有人 – singhabsk 2011-02-05 03:41:51

1

您的需求就是我不太清楚,但这里是存储第二栏为每个不同的第三列的脚本:

#!/usr/bin/perl 
use 5.10.1; 
use strict; 
use warnings; 
use Data::Dumper; 

my %result; 
while (<DATA>) { 
    chomp; 
    next if /^\s*$/; 
    my @cols = split; 
    push @{$result{$cols[2]}}, $cols[1]; 
} 
say Dumper \%result; 


__DATA__ 
69013 1-3039-1 REGISTER 

69013 1-3039-1 100 


69013 1-3039-1 401 

69013 1-3039-2 REGISTER 

69013 1-3039-2 100 

69013 2-3039-1 REGISTER 

69013 3-3039-1 REGISTER 

69013 4-3039-1 REGISTER 

69023 213-3039-2 REGISTER 

69023 193-3039-2 100 

69023 193-3039-2 401 

69023 222-3039-1 REGISTER 

69023 177-3039-2 100 

69024 177-3039-2 401 

69024 214-3039-1 100 

69024 214-3039-1 401 

69024 214-3039-2 REGISTER 

输出:

$VAR1 = { 
      '401' => [ 
        '1-3039-1', 
        '193-3039-2', 
        '177-3039-2', 
        '214-3039-1' 
        ], 
      'REGISTER' => [ 
          '1-3039-1', 
          '1-3039-2', 
          '2-3039-1', 
          '3-3039-1', 
          '4-3039-1', 
          '213-3039-2', 
          '222-3039-1', 
          '214-3039-2' 
         ], 
      '100' => [ 
        '1-3039-1', 
        '1-3039-2', 
        '193-3039-2', 
        '177-3039-2', 
        '214-3039-1' 
        ] 
     };