[Moscow.pm] transform sort function to Schwartzian Transform ??
Nikolay Mishin
mi на ya.ru
Пт Сен 9 10:57:25 PDT 2011
Отличный отчет, но в результате сортируется не верно - после июня июль
проверьте на этом куске
#!/usr/bin/perl
use strict;
use warnings;
use Smart::Comments;
use constant RegExp_parse_name =>
qr/([A-Z0-9]+_\d+_[A-Z0-9]+)_(\d+)-([A-Z][a-z]{2})-(20\d{2})_(\d+)[.]xml/;
my %months = ( Jan => '01', Feb => '02', Mar => '03', Apr => '04', May => '05',Jun => '06',
Jul => '07', Aug => '08', Sep => '09', Oct => '10', Nov => '11',Dec => '12',
);
my @tmp_scons;
my @tmp_scons2;
while ( my $str = <DATA> )
{
chomp($str);
my ( $trade_id, $date, $month, $year, $row_num ) = $str =~
RegExp_parse_name;
$trade_id or next;
$month = $months{$month};
push @tmp_scons, [ "$trade_id:$year-$month-$date:$row_num", $str];
push @tmp_scons2, "$trade_id:$year-$month-$date:$row_num";
}
my @scons = map $_->[1], sort {$a cmp $b} @tmp_scons;
### @tmp_scons2:@tmp_scons2
### @tmp_scons:@tmp_scons
### @scons:@scons
foreach(sort @tmp_scons2)
{
print "$_\n";
}
foreach(@scons)
{
print "$_\n";
}
__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
09.09.2011, 20:08, "Denis Evdokimov" <evdokimov.denis на gmail.com>:
> А теперь ответ на вопрос
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> use constant RegExp_parse_name =>
> qr/([A-Z0-9]+_\d+_[A-Z0-9]+)_(\d+)-([A-Z][a-z]{2})-(20\d{2})_(\d+)[.]xml/;
> my %months = (
> FY => '00',
> Jan => '01',
> Feb => '02',
> Mar => '03',
> Apr => '04',
> May => '05',
> Jun => '06',
> Jul => '07',
> Aug => '08',
> Sep => '09',
> Oct => '10',
> Nov => '11',
> Dec => '12',
> );
>
> my @tmp_scons;
> while ( my $str = <DATA> )
> {
> chomp($str);
> my ( $trade_id, $date, $month, $year, $row_num ) = $str =~
> RegExp_parse_name;
> $trade_id or next;
> $month = $months{$month};
> push @tmp_scons, [ "$trade_id:$year-$month-$date:$row_num", $str];
> }
> my @scons = map $_->[1], sort {$a cmp $b} @tmp_scons;
>
> foreach(@scons)
> {
> print "$_\n";
> }
>
> __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
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Nikolay Mishin
Подробная информация о списке рассылки Moscow-pm