#! perl use strict; use warnings; use Test::More; my %data = ( 'GNRABS 2014-186' => 'GNRABS14-186', 'A10 2013-1' => 'A1013-1', 'CGBAM 2014-HD' => 'CGBAM14-HD', 'FHMS K032' => 'FHMS-K032', ); is(rewrite($_), $data{$_}) for keys %data; done_testing(); sub rewrite { my ($string) = @_; my ($left, $right) = split /\s+/, $string, 2; if (my @m = $right =~ /\d{2}(\d{2})(.*)/) { $right = $m[0] . ($m[1] =~ /^-/ ? '' : '-') . $m[1]; } else { $right = '-' . $right unless $right =~ /^-/; } return $left . $right; }