The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

for my $file (@ARGV) {
    my $read;
    unless (open($read, "<", $file)) {
        warn "Can't open $file: $!";
        next;
    }
    my $lines = do {undef $/; <$read>};
    close $read;

    my $s = 1;
    while ($lines =~ /\b(S\d{6,}_\d{5,})/) {
        my $replace = $1;
        $lines =~ s/$replace/S$s/g;
        $s++;
    }

    $file .= ".unserial";
    my $write;
    unless (open($write, ">", $file)) {
        warn "Can't open $file for writing: $!";
        next;
    }
    print $write $lines;
    close $write;
}