#!/usr/bin/env perl

use v5.12;
use warnings;
use utf8;

#use Smart::Comments;

my $RegExp_parse_name = qr/(\w+)_(\d{2})-(\w{3})-(\d{4})_(\d+)/;

#create month hash
my %months;
@months{ qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ) } = ( '00' .. '11' ); # two symbol for correct literal matching
# %months

my ($result, $index);

while ( my $str = <DATA> ){
	
	chomp $str;
	my $search_str = $str;
	next unless $search_str =~ s/$RegExp_parse_name/$4-$months{$3}-$2:$5/;
	my $trade_id = $1;
		
	# ok, if we are search less value - ignore greater
	next if ( exists $index->{$trade_id} && ( $index->{$trade_id} lt $search_str ) );
	
	$index->{$trade_id} = $search_str;
	$result->{$trade_id} = $str;
	
}
# $result

say $result->{$_} foreach ( reverse sort keys %$result );


__DATA__
N1089767N_7_SWOPT_03-Jul-2011_78919186.xml
N1089767N_7_SWOPT_25-Jun-2011_72745892.xml
N1089772L_9_SWOPT_03-Jul-2011_78979055.xml
N1089772L_9_SWOPT_20-Jul-2011_69380887.xml
N1089772L_9_SWOPT_29-Jun-2011_74754662.xml
