#!/usr/bin/env perl -l use strict; use warnings; my ($part_no, @part_info); while () { if (/^partnm_(\d)/) { print_part_data($part_no, \@part_info); $part_no = $1; @part_info = (); next; } push @part_info, $1 if /^(prlot|prwafer|prbin)/; } print_part_data($part_no, \@part_info); sub print_part_data { my ($num, $info) = @_; print "$num: ", @$info ? join ',' => @$info : 'empty' if defined $num; } __DATA__ partnm_1 prlot prwafer prbin sspec fab partnm_2 sspec fab partnm_3 .... ....