Предполагая, что следующий вход:Perl Вывод из ошибок файла
for ($k = 0; $k < @tableb; $k++) {
chomp ($tableb[$k]);
($netsta, $delay_time) = (split /\s+/,$tableb[$k])[1,9];
($net, $sta) = (split /\./, $netsta)[0,1];
print $net, " ", $sta, "\n";
if ($net eq "ZJ" && $sta eq "DONT") {
$stat = 1;
} elsif ($net eq "ZJ" && $sta eq "MICH") {
$stat = 2;
} elsif ($net eq "ZJ" && $sta eq "LEON") {
$stat = 3;
} elsif ($net eq "ZJ" && $sta eq "RAPH") {
$stat = 4;
} elsif ($net eq "ZJ" && $sta eq "SPLN") {
$stat = 5;
} elsif ($net eq "ZJ" && $sta eq "SHRD") {
$stat = 6;
} elsif ($net eq "ZJ" && $sta eq "CASY") {
$stat = 7;
} elsif ($net eq "ZJ" && $sta eq "APRL") {
$stat = 8;
} elsif ($net eq "ZJ" && $sta eq "FOOT") {
$stat = 9;
} elsif ($net eq "ZJ" && $sta eq "BEBP") {
$stat = 10;
} elsif ($net eq "ZJ" && $sta eq "RKST") {
$stat = 11;
} elsif ($net eq "ZJ" && $sta eq "DUBY") {
$stat = 12;
} elsif ($net eq "ZJ" && $sta eq "SAMH") {
$stat = 13;
} elsif ($net eq "ZJ" && $sta eq "GRAW") {
$stat = 14;
} elsif ($net eq "ZJ" && $sta eq "KNYN") {
$stat = 15;
} else {
}
printf OUT "%s \n", $stat;
}
Я желаю взять выходной сети (сети) и STA (станция) из одного файла (как показано ниже), а затем изменить ГНА (название станции указано в условных обозначениях if/elsif), до определенного числа (1-15). Мой вывод, хотя и не только печатает числа для станций, но также выводит 5, что, скорее всего, соответствует другим строкам, выводимым в 0 и 1. Я не хочу лишних пяток. Я просто хочу, чтобы номера станций изменились.
Входной файл, который я читаю выглядит как:
MCCC processed: unknown event at: Thu, 16 Oct 2014 12:42:09 CST
station, mccc delay, std, cc coeff, cc std, pol , t0_times , delay_times
ZJ.CASY 0.4736 0.0000 0.9844 0.0288 0 CASY.BHZ 300.6973 0.0691
ZJ.GRAW -0.1526 0.0000 0.9853 0.0277 0 GRAW.BHZ 300.8462 -0.7059
ZJ.RAPH 1.1169 0.0000 0.9845 0.0287 0 RAPH.BHZ 300.6406 0.7691
ZJ.SHRD -2.0157 0.0000 0.9439 0.0038 0 SHRD.BHZ 301.0593 -2.7821
ZJ.SPLN 0.5778 0.0000 0.9858 0.0243 0 SPLN.BHZ 300.6516 0.2191
Mean_arrival_time: 300.2929
No weighting of equations.
Window: 2.94 Inset: 1.10 Shift: 0.25
Variance: 0.00000 Coefficient: 0.97677 Sample rate: 40.000
Taper: 0.37
Phase: P
PDE 2013 11 23 7 52 45.02 -17.117 -176.544 371.0 0.0 6.5
и в настоящее время, то если условными должны читать эту информацию:
mccc
ZJ CASY
ZJ GRAW
ZJ RAPH
ZJ SHRD
ZJ SPLN
300 2929
weighting
2 94
0 00000
0 37
P
2013
Наконец, конечная цель, для каждого файла в @tableb, я хотел бы напечатать вывод, который выглядит следующим образом:
$ filename
7
14
4
5
6
Вы можете показать образец ввода и вывода? – tivn
Пожалуйста, пожалуйста, включите «строгие» и «предупреждения» - это поможет вам найти проблемы и ошибки в коде. Это необязательно в вашем собственном коде, но когда вы просите других о помощи, это базовый шаг по устранению неполадок! – Sobrique
Также - примеры входных данных. Мы не можем устранить ваш код, который выводит что-то неожиданное, если мы не знаем, что происходит _in_ для создания этого вывода. – Sobrique