Here's one way which I believe works for your data (you should have shown your desired output for me to be sure):
use strict;
use warnings;
my $prev;
while (<DATA>) {
print $prev unless /^\d{5}\s/;
$prev = $_;
}
print $prev unless $prev =~ /^\d{5}\s/;
__DATA__
00210 SHIFT PAY PRIV SYSOU
00211 SV-PROG OS SAVE
00215 OS MIGRATE SAVE
00217 DEM OS SUPER SAVE1
00219 DEM OS SUPER SAVE2
00221 DEM OS SUPER SAVE3
00901 DSDFIL
01401 PERISH STORE INV
(V) INV810 BOB FERRANTE (EDIT REPORT IF 05309 PRSH INV)
EXTRACT WAS RUN)
(V) INV820 BOB FERRANTE (PERISHABLE INVENTORY REPORT)
(VTD8) D:\DEPT\ACCT\MAIL\INV820.DAT
(V) INV820C DIANE CALLAHAN (PERISHABLE INVENTORY-BAKERY)
(QUARTERLY RUN ONLY)
01402 PERSH INV BOOKS
(V) INV805 58 COPIES - BOB FERRANTE
(V) INV805 2 COPIES - JIM MIAMIS
(V) INV805A XTRA COPIES-SAVE IN COMPUTER ROOM
ANNUAL STORE INVENTORY ONLY:
(V) INV805 58 COPIES - USER
(V) INV805 2 COPIES - USER
(V) INV805A XTRA COPIES-SAVE IN COMPUTER ROOM
01403 BAKERY INV BOOKS
(V) INV805 35 COPIES - USER
(V) INV805A 5 COPIES - SAVE IN COMPUTER ROOM
ANNUAL STORE INVENTORY ONLY:
(J) INV805 35 COPIES - USER
(J) INV805A 5 COPIES - SAVE IN COMPUTER ROOM
01405 PRSH INV. EXTRACT
(V) MSI000 OPERATIONS DOCUMENTATION (MSI DUMP LISTING)
01501 INV PRICE GUIDE
01502 INV SLOTBOOK
(V) CIO102 OPERATIONS SUPERVISOR (2 COPIES)
(2 COPIES-IN BINDERS AND LEAVE WITH CODERS)
PRICE GUIDES
01503 INV-DUPS
THE FOLLOWING OUTPUT WILL ONLY BE PRODUCED IF DUPLICATE
SLOTS ARE FOUND.
(V) INV900 USER
(V) INV969 USER