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)) =~ /^\+/)