if ($_ =~ /^xa1/) {
####
sub getsub
{
my $sub = $_[0];
print "sub entered for $sub\n";
local $fh;
seek $fh, 0, 0;
while (<$fh>)
{
print if /\.subckt $sub/ .. /\.ends/;
}
}
##
##
use strict;
use warnings;
open(my $fh, '<', $ARGV[0]) or die "Could not open file: $!";
sub getsub
{
my $sub = $_[0];
print "sub entered for $sub\n";
open my $fh2, '<', 'subs.txt' or die "Could not open file: $!";
while (<$fh2>)
{
print if /\.subckt $sub/ .. /\.ends/;
}
close $fh2 or die "Could not close file: $!";
}
while (my $line = <$fh>)
{
if ($line =~ /^xa1/)
{
print "line found to be $line\n";
while ((my $nxt = readline($fh)) =~ /^\+/)
{
$line = $nxt;
print "line changed to $line\n";
}
$line =~ s/\s+$//;
print "last line is $line\n";
my $sub = (split '\s', $line)[-1];
print "subcircuit found is $sub in $line\n";
my $file_pos = tell $fh;
getsub($sub);
seek $fh, $file_pos, 0;
}
}
close $fh or die "Could not close file: $!";
##
##
2:55 >perl 1032_SoPW.pl subs.txt
line found to be xa1 a s f a1
last line is xa1 a s f a1
subcircuit found is a1 in xa1 a s f a1
sub entered for a1
.subckt a1 x y z
xa a b c1
xb c d e1
xc f g h1
.ends
2:56 >
##
##
while ((my $nxt = readline($fh)) =~ /^\+/)
##
##
while (!eof && (my $nxt = readline($fh)) =~ /^\+/)