use strict;
my $str = '12 DIG ARTIFEX Bundle 3 9 Clues 2: The Ward STEAM 5MQ7W-N7PAT-V0QQL YES Mark as used
13 DIG ARTIFEX Bundle 3 9 Clues: The Secret of Serpent Creek STEAM PEMFX-48T80-20ANW YES Mark as used
14 DIG Super Bundle 76 HellAngel STEAM FENFR-LQ0N3-TNLR0 YES Mark as used
1 DIG Points Purchase Monsti STEAM BCI7T-Z9P4Q-LGJ9T YES Mark as used
2 DIG Super Bundle 74 Wooden Floor 2 - Resurrection STEAM LPL6L-2LJ74-GWG3W YES
3 DIG Super Bundle 74 Warriors of Vilvatikta STEAM 90LPI-T5KC2-C4W6M YES
4 DIG Super Bundle 74 Final Quest STEAM IJRID-JYGH3-3M5C7 YES
5 DIG Super Bundle 74 Gold Rush! - Anniversary STEAM 6D7DA-8EZZP-DET6A YES
6 DIG Super Bundle 75 Sleeping Valley STEAM 8AFHR-C0X43-DAG74 YES ';
my $regex = qr/^.*(([\w\d]{5}-?){3}).*$/mip;
my $subst = '$1';
my $result = $str =~ s/$regex/$subst/rg;
print "The result of the substitution is' $result\n";
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html