#!/usr/bin/perl use warnings; use strict; my $filename = 'c:\Users\aqids\Desktop\SCOAP\module.txt'; my $INPUT_DATA; my @test_input_array; open(FH, '<', $filename) or die "Cannot open file!"; while() { #READ MODULE NAME my $MODULE_NAME = $_; my @test_input_array; if (defined($MODULE_NAME) && ($MODULE_NAME =~ /(MODULE \w+) /)) { my $module_name = $1; print "Module name = $module_name\n"; } #READ input N1,N2,N3,N6,N7; my $INPUT_DATA = $_; if (defined($INPUT_DATA) && ($INPUT_DATA =~ /INPUT (.*);/)) { my @input_array = split /,/, $1; @test_input_array = @input_array; my $size_input = @input_array; print "Primary input = "; print scalar "@input_array\n"; print "Number of primary input = $size_input\n"; } #READ output N22, N23; my $OUTPUT_DATA = $_; if (defined($OUTPUT_DATA) && ($OUTPUT_DATA =~ /OUTPUT (.*);/)) { my @output_array = split /,/, $1; my $size_output = @output_array; print "Primary output = "; print scalar "@output_array\n"; print "Number of primary output = $size_output\n"; } #READ wire N10, N11, N16, N19; my $WIRE_DATA = $_; if (defined($WIRE_DATA) && ($WIRE_DATA =~ /WIRE (.*);/)) { my @wire_array = split /,/, $1; my $size_wire = @wire_array; print "Wires = "; print scalar "@wire_array\n"; print "Number of wires = $size_wire\n\n"; } my $gate_DATA = $_; if (defined($gate_DATA) && ($gate_DATA =~ /(.*) (.*) \((.*),(.*),(.*)\);/) && ($gate_DATA !~ /MODULE/) ) { my $gate_type = $1; my $gate_name = $2; my $gate_output = $3; my $input_A = $4; my $input_B = $5; print "Gate type = $gate_type\n"; print "Gate name = $gate_name\n"; print "Output = $gate_output\n"; print "Input A = $input_A\n"; print "Input B = $input_B\n"; if (grep { $input_A eq $_ } @test_input_array) { print "Yes\n"; print "@test_input_array\n\n"; } else { print "No\n\n"; } }