Я пытаюсь собрать несколько совпадений в группе строк в текстовом файле.
Данные принимают множество форм, таких как
AO22_X1N_A9PP96CTS_C24 SYN_INC_187 (.A0 (test_so6), .A1 (n2218)
,
.B0 (U_PAUSEdata_ff_int_28_), .B1 (n2), .Y (n2597));
NAND3_X1R_A9PP96CTUL_C16 SYN_INC_154 (.A (n1563),
.B (U_PAUSEwcnt), .C (n1640), .Y (n1467));
Первая часть - это имя. Возможно, захочу ТАТ позже, но сейчас я заинтересован в портах ex .A (нетто)
В идеале я хочу захватить все имена входных сетей (с именами A, B, C, D и т. Д.) И один выход .Y (net)
В конце концов я хочу сохранить их в хеш-коде, где выходная сеть - это ключ, а данные - ссылка на массив входных данных, но сейчас я просто пытаюсь получить все входные сети для захвата.
Это то, с чем я сейчас работаю
open (FILE, "<maca") or die("Can not open $file");
while (defined(my $cur_line = <FILE>)) {
if ($cur_line =~ m/[A-Z].*?\.[A-C]\d* \( (.*?) \).*?;/mg) {
print "THIS gate $cur_line $1 $2 $3\n";
}
}
Я пытаюсь для этого дисплея
ЭТИ ворота NAND3_X1R_A9PP96CTUL_C16 SYN_INC_154 (.A (n1563),
.B (U_PAUSEwcnt), .C (n1640), .Y (n1467));
n1563 U_PAUSEwcnt n1640
Но я понял. На самом деле меня не волнует первая строка, только вторая. Первый для отладки. Я думал, что m будет искать несколько строк, а g будет глобально соответствовать многострочной строке. Чего мне не хватает
ЭТО вентиль .B (U_PAUSEwcnt), .C (n1640), .Y (n1467));
n1640