如何计算哈希值

时间:2016-07-23 16:54:37

标签: perl

我有一个以下修复文件,我想知道同时发送了多少订单。我使用标签52作为发送时间。

以下是文件

  

8 = FIX.4.2 | 9 = 115 | 35 = A | 52 = 20080624-12:43:38.021 | 10 = 186 |

     

8 = FIX.4.2 | 52 = 20080624-12:43:38.066 | 10 = 111 |

     

8 = FIX.4.2 | 9 = 105 | 35 = 1 | 22 = BOO | 52 = 20080624-12:43:39.066 | 10 = 028 |

如果我想计算数字发送了多少相同的Tag 52值?我怎么检查?

到目前为止,我已经写了下面的代码,但没有给我频率。

#!/usr/bin/perl

$f = '2.txt';
open (F,"<$f") or die "Can not open\n";
while (<F>)
{
        chomp $_;
        @data = split (/\|/,$_);
        foreach $data (@data)
        {
                if ( $data == 52){
                @data1 = split ( /=/,$data);
                for my $j (@data1)
                {
                        $hash{$j}++;
                } for my $j (keys %hash)
                        {
                                print "$j: ", $hash{j}, "\n";
                        }

                }
        }
}

1 个答案:

答案 0 :(得分:-1)

以下是您的代码更正:

if ( $data == 52)

说明:

  1. (.*)将整个字段与值52进行比较,而不是字段的子字符串。当然,您没有这样的字段,测试总是失败。我用正则表达式比较替换它。

  2. 相同的正则表达式提供了立即捕获时间戳的机会,而无需再次分割字段。它由正则表达式中的$1和以下作业中的foreach完成。

  3. 为输入数据的每一行输出散列(您的代码在 <a href="#" class="selectitem1" type="submit">Select Item</a> <a href="#" class="selectitem2" type="submit">Select Item</a> <a href="#" class="selectitem3" type="submit">Select Item</a> $(function() { $("a.selectitem1").click(function() { $("a.selectitem1").text('Selected'); }); }); //not sure what to do here add_filter( 'abcde', 'adjust_amount'); function adjust_amount() { if selectitem1 text value is now "Selected"{ $amount = 50; if selectitem2 text value is now "Selected"{ $amount = 150; if selectitem3 text value is now "Selected"{ $amount = 250; } 循环内输出)几乎没有意义。我把它搬了下来。但也许,输出每行的当前哈希是你想要的,我不知道。