my @from = sort { substr( $a, 46, -4) <=> substr( $b, 46, -4) } <$fromdir/*.las>; my $oldbase = ''; my $next = 0; for my $from (@from) { my $base = substr( $from, 35, 11 ); if ( $base ne $oldbase ) { $oldbase = $base; my $last = ( sort{ substr( $a, 22, -4) <=> substr( $b, 22, -4) } <$todir/$base*.las> ) [-1]; $next = substr( $next, 22, -4) + 1; } rename $from, "$todir/$basex$next.las"; $next++; }