我有一个以下修复文件,我想知道同时发送了多少订单。我使用标签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";
}
}
}
}
答案 0 :(得分:-1)
以下是您的代码更正:
if ( $data == 52)
说明:
(.*)
将整个字段与值52进行比较,而不是字段的子字符串。当然,您没有这样的字段,测试总是失败。我用正则表达式比较替换它。
相同的正则表达式提供了立即捕获时间戳的机会,而无需再次分割字段。它由正则表达式中的$1
和以下作业中的foreach
完成。
为输入数据的每一行输出散列(您的代码在 <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;
}
循环内输出)几乎没有意义。我把它搬了下来。但也许,输出每行的当前哈希是你想要的,我不知道。