G'day suno,
This does what you want based on your input. I'll leave you to supply appropriate filehandles for the output.
#!/usr/bin/env perl use 5.010; use strict; use warnings; my @Read_Array = <DATA>; my (@code_file, @var_file); my $var_file_re = qr{ \A \s* DC }x; my $label_re = qr{ \s+ EQU \s+ \* }x; my $label_line = ''; for (@Read_Array) { if (/$label_re/) { $label_line = $_; next; } if ($label_line) { $label_line .= $_; if (/$var_file_re/) { push @var_file, $label_line; } else { push @code_file, $label_line; } $label_line = ''; } } say 'CODE_FILE:'; print join "\n" => @code_file; say 'VARIABLE_FILE:'; print join "\n" => @var_file; __DATA__ LABEL#1 EQU * $MAC ABORT LABEL#2 EQU * + $NOT UPDATE,STOP T#TAB1 EQU * + DC AL4(-1)
Output:
$ pm_capture_last.pl CODE_FILE: LABEL#1 EQU * $MAC ABORT LABEL#2 EQU * + $NOT UPDATE,STOP VARIABLE_FILE: T#TAB1 EQU * + DC AL4(-1)
-- Ken
In reply to Re: How to push the previous line based on the current line to two different files.
by kcott
in thread How to push the previous line based on the current line to two different files.
by suno
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |