in reply to Push can shove it.

It might be a scoping issue, you didn't supply enough code for how you are feeding the list to the make_sections. Here is some code that seems to produce what you wanted if I understand correctly.
use Data::Dumper; my @tmp; @data = <DATA>; make_sections(@data); print Dumper(\@tmp); sub make_sections { my $tmp; for (@_) { my $fn = $_; print "$fn\n"; my $pnum = substr($fn, 6, 3); $pnum =~ s/0//; my $section = substr($fn, 5, 1); push @tmp, $section; #$MAIN::PageInfo{$section}{$pnum} = $_; #s/$MAIN::fileExt/$MAIN::imgExt/; #$MAIN::PageInfo{$section}{$fn} = $_; #print "Name: $PageInfo{$section}{$pnum} Section: $se +ction PNum: $pnum Thumb: $PageInfo{$section}{$fn} \n"; } print "Exiting Make Sections.\n"; return @tmp; } __DATA__ R3012G006.PDF R3012G007.PDF R3012G008.PDF R3012H001.PDF R3012H002.PDF R3012H003.PDF R3012H004.PDF R3012H005.PDF R3012H006.PDF R3012J001.PDF R3012J002.PDF R3012J003.PDF R3012J004.PDF R3012J005.PDF R3012J006.PDF R3012J007.PDF R3012J008.PDF R3012J009.PDF R3012J010.PDF R3012J011.PDF R3012J012.PDF R3012J013.PDF R3012J014.PDF R3012J015.PDF R3012J016.PDF R3012J017.PDF R3012J018.PDF R3012J019.PDF R3012J020.PDF R3012J021.PDF R3012J022.PDF R3012J023.PDF R3012J024.PDF R3012J025.PDF R3012J026.PDF R3012J027.PDF R3012J028.PDF R3012J029.PDF R3012J030.PDF R3012J031.PDF R3012J032.PDF
Some modifications may be needed to meet your goal, but I think it provides the results you are loooking for.