in reply to Re^2: Need to save a single line from delete on some special condition
in thread Need to save a single line from delete on some special condition
the three assumptions you mentioned are accurateIf you're really sure about the indentation something like that can help :
It's very rough, and assumes a very consistent indentation. It divides the input into section (even empty ones between the pins but that shouldn't be an issue):use strict; use warnings; use v5.10; my $data = do { local $/; <DATA> }; my @sections = split /(\s{4}pin.*?\s{4}\})/s, $data; for (@sections) { say; say '-' x 24; } __END__ cell (lib_1) { dont_use : true ; dont_touch : true ; pin ("HIZIBI_IN_1") { direction : input ; clock : true ; max_transition : 1 ; capacitance : 12 ; } pin ("HIZIBI_79") { direction : output ; max_transition : 10; min_capacitance : 3 ; } pin ("HIZIBI_IN_1") { direction : input ; clock : true ; max_transition : 1 ; capacitance : 1 ; } pin ("HIZIBI_78") { direction : output ; max_transition : 10; min_capacitance : 34 ; capacitance : 34 ; } pin ("HIZIBI") { direction : output ; clock : true ; max_transition : 20; related_power_pin : VDD ; related_ground_pin : VSS ; timing () { cell_fall (into_f1) { index_1("1,2,3,4,5") ; index_2("1,2,3,4,5") ; values("13, 13, 14, 16, 18",\ "13, 14, 15, 16, 19",\ "14, 15, 16, 17, 20",\ "15, 15, 16, 18, 20",\ "15, 16, 17, 18, 21") ; } } } }
cell (lib_1) { dont_use : true ; dont_touch : true ; ------------------------ pin ("HIZIBI_IN_1") { direction : input ; clock : true ; max_transition : 1 ; capacitance : 12 ; } ------------------------ ------------------------ pin ("HIZIBI_79") { direction : output ; max_transition : 10; min_capacitance : 3 ; } ------------------------ ------------------------ pin ("HIZIBI_IN_1") { direction : input ; clock : true ; max_transition : 1 ; capacitance : 1 ; } ------------------------ ------------------------ pin ("HIZIBI_78") { direction : output ; max_transition : 10; min_capacitance : 34 ; capacitance : 34 ; } ------------------------ ------------------------ pin ("HIZIBI") { direction : output ; clock : true ; max_transition : 20; related_power_pin : VDD ; related_ground_pin : VSS ; timing () { cell_fall (into_f1) { index_1("1,2,3,4,5") ; index_2("1,2,3,4,5") ; values("13, 13, 14, 16, 18",\ "13, 14, 15, 16, 19",\ "14, 15, 16, 17, 20",\ "15, 15, 16, 18, 20",\ "15, 16, 17, 18, 21") ; } ------------------------ } } } ------------------------
Edit: it also assumes that the file is not so big that you can't read it all at once.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Need to save a single line from delete on some special condition
by anirbanphys (Beadle) on Mar 26, 2019 at 14:30 UTC | |
by Eily (Monsignor) on Mar 27, 2019 at 08:45 UTC |