<div>ðÒÏÇÎÁÌ ÞÅÒÅÚ perlcritic</div><div>ÏËÁÚÙ×ÁÅÔÓÑ × perl5 switch deprecated</div><div>š</div><div><div>#!/usr/bin/perl</div><div>######################################</div><div># š š š$URL: http://mishin.narod.ru $</div><div># š š $Date: 2011-09-14 19:53:20 +0300 (Web, 14 Sep 2011) $</div><div># š $Author: mishin nikolay $</div><div># $Revision: 1.02 $</div><div># š $Source: Sort_trades_get_latest.pl $</div><div># š $Description: Sort trades and get latest $</div><div>##############################################################################</div><div>#use v5.10;</div><div>use strict;</div><div>use warnings;</div><div>our $VERSION = '0.01';</div><div>use Data::Dumper;</div><div>use Carp;</div><div>use English qw(-no_match_vars);</div><div>use lib '/rwa/data/team/MISHNIK/perl/utils/Perl6-Say-0.16/lib';</div><div>use lib '/rwa/data/team/MISHNIK/perl/utils/Switch-2.16';</div><div>use lib '/rwa/data/team/MISHNIK/perl/utils/List-UtilsBy-0.07/lib';</div><div>use lib '/rwa/data/team/MISHNIK/perl/utils/Readonly-1.03';</div><div>use Perl6::Say;</div><div>use List::UtilsBy qw( rev_sort_by );</div><div>use Readonly;</div><div>my %months;</div><div>@months{qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )} =</div><div>š ( '00' .. '11' );</div><div># š š š š š š š š š š š š š š š š N1089767N_7_SWOPT_03-Jul-2011_78919186.xml</div><div>Readonly my $RGX_SHORT_MESS => qr/(\w+)_(\d{2})-(\w{3})-(\d{4})_(\d+)/ms;</div><div># š š š š š š š š š š š š š š š šmessage.110530033311A4259348AS26.A4259348AS_26_SWOPT_01-Jul-2011.xml</div><div>Readonly my $RGX_LONG_MESS =></div><div>š qr/message[.](\w+)[.](\w+)_(\d{2})-(\w{3})-(\d{4})/ms;</div><div>#my @file_names = <DATA>;</div><div>my $file = 'file_names.txt';</div><div>open my $fh, q{<}, $file or croak "unable to open:$file $ERRNO";</div><div>my @file_names = <$fh>;</div><div>close $fh or croak "unable to close: $file $ERRNO";</div><div>#print Dumper(\@file_names);</div><div>#print "@file_names";</div><div>### @file_names:@file_names</div><div>#rkeysort_inplace { make_trade_sortest($_) } @file_names;</div><div>my @sort_file_names = rev_sort_by { make_trade_sortest($_) } @file_names;</div><div>my %is_avaible;</div><div>foreach my $file_name (@file_names) {</div><div>š š my ($trade_id);</div><div>š š if ( $file_name =~ $RGX_SHORT_MESS ) {</div><div>š š š š $trade_id = $1;</div><div>š š }</div><div>š š if ( $file_name =~ $RGX_LONG_MESS ) {</div><div>š š š š $trade_id = $2;</div><div>š š }</div><div>š š if ( !$is_avaible{$trade_id} ) {</div><div>š š š š print "$file_name";</div><div>š š }</div><div>š š $is_avaible{$trade_id}++;</div><div>}</div><div>### @file_names:@file_names</div><div>#function make name good for sort alphabetically</div><div>sub make_trade_sortest {</div><div>š š my ($trade_file_name) = @_;</div><div>š š my ( $trade_id, $date, $month, $year, $row_num );</div><div>š š if ( $trade_file_name =~ $RGX_SHORT_MESS ) {</div><div>š š š š ( $trade_id, $date, $month, $year, $row_num ) = ( $1, $2, $3, $4, $5 );</div><div>š š }</div><div>š š if ( $trade_file_name =~ $RGX_LONG_MESS ) {</div><div>š š š š ( $row_num, $trade_id, $date, $month, $year ) = ( $1, $2, $3, $4, $5 );</div><div>š š }</div><div>š š $month = $months{$month};</div><div>š š #print "$trade_id:$year-$month-$date:$row_num";</div><div>š š return "$trade_id:$year-$month-$date:$row_num";</div><div>}</div><div>__DATA__</div><div>N1089767N_7_SWOPT_03-Jul-2011_78919186.xml</div><div>N1089767N_7_SWOPT_25-Jun-2011_72745892.xml</div><div>N1089772L_9_SWOPT_23-Jul-2011_78979055.xml</div><div>N1089772L_9_SWOPT_20-Jul-2011_69380887.xml</div><div>N1089772L_9_SWOPT_29-Jun-2011_74754662.xml</div><div>message.110530033311A4259348AS26.A4259348AS_26_SWOPT_01-Jul-2011.xml</div><div>message.110530033311A4259348AS26.A4259348AS_26_SWOPT_31-May-2011.xml</div><div>A4259348AS_26_SWOPT_29-Jun-2011_74754662.xml</div></div><div>14.09.2011, 15:36, "Nikolay Mishin" <mi@ya.ru>:</div><blockquote><div>÷ ÉÔÏÇÅ ÐÏÌÕÞÉÌÏÓØ ÔÁËÏÅ ÒÅÛÅÎÉÅ:</div><div><div>use v5.10;</div><div>use Sort::Key qw(rkeysort_inplace);</div><div>use Readonly;</div><div>#use Smart::Comments;</div><div>my %months;</div><div>@months{qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )} =</div><div>š ( '00' .. '11' );</div><div># š š š š š š š š š š š š š š š š N<span>1089767</span>N_7_SWOPT_03-Jul-2011_<span>78919186</span>.xml</div><div>Readonly my $RGX_SHORT_MESS => qr/(\w+)_(\d{2})-(\w{3})-(\d{4})_(\d+)/;</div><div># š š š š š š š š š š š š š š š šmessage.<span>110530033311</span>A<span>4259348</span>AS26.A<span>4259348</span>AS_26_SWOPT_01-Jul-2011.xml</div><div>Readonly my $RGX_LONG_MESS => qr/message[.](\w+)[.](\w+)_(\d{2})-(\w{3})-(\d{4})/;</div><div>my @file_names = <DATA>;</div><div>### @file_names:@file_names</div><div>rkeysort_inplace { make_trade_sortest($_) } @file_names;</div><div>my %is_avaible;</div><div>foreach my $file_name (@file_names) {</div><div>š š my ($trade_id);</div><div>š š given ($file_name) {</div><div>š š š š when ($RGX_SHORT_MESS) {</div><div>š š š š š š $trade_id = $1;</div><div>š š š š }</div><div>š š š š when ($RGX_LONG_MESS) {</div><div>š š š š š š $trade_id = $2;</div><div>š š š š }</div><div>š š }</div><div>š š if ( !$is_avaible{$trade_id} ) {</div><div>š š š š print "$file_name";</div><div>š š }</div><div>š š $is_avaible{$trade_id}++;</div><div>}</div><div>### @file_names:@file_names</div><div>#function make name good for sort alphabetically</div><div>sub make_trade_sortest {</div><div>š š my ($trade_file_name) = @_;</div><div>š š my ( $trade_id, $date, $month, $year, $row_num );</div><div>š š given ($trade_file_name) {</div><div>š š š š when ($RGX_SHORT_MESS) {</div><div>š š š š š š ( $trade_id, $date, $month, $year, $row_num ) =</div><div>š š š š š š š ( $1, $2, $3, $4, $5 );</div><div>š š š š }</div><div>š š š š when ($RGX_LONG_MESS) {</div><div>š š š š š š ( $row_num, $trade_id, $date, $month, $year ) =</div><div>š š š š š š š ( $1, $2, $3, $4, $5 );</div><div>š š š š }</div><div>š š }</div><div>š š $month = $months{$month};</div><div>š š return "$trade_id:$year-$month-$date:$row_num";</div><div>}</div><div>__DATA__</div><div>N<span>1089767</span>N_7_SWOPT_03-Jul-2011_<span>78919186</span>.xml</div><div>N<span>1089767</span>N_7_SWOPT_25-Jun-2011_<span>72745892</span>.xml</div><div>N<span>1089772</span>L_9_SWOPT_03-Jul-2011_<span>78979055</span>.xml</div><div>N<span>1089772</span>L_9_SWOPT_20-Jul-2011_<span>69380887</span>.xml</div><div>N<span>1089772</span>L_9_SWOPT_29-Jun-2011_<span>74754662</span>.xml</div><div>message.<span>110530033311</span>A<span>4259348</span>AS26.A<span>4259348</span>AS_26_SWOPT_01-Jul-2011.xml</div><div>message.<span>110530033311</span>A<span>4259348</span>AS26.A<span>4259348</span>AS_26_SWOPT_31-May-2011.xml</div><div>A<span>4259348</span>AS_26_SWOPT_29-Jun-2011_<span>74754662</span>.xml</div></div><div>10.09.2011, 21:00, "Nikolay Mishin" <<a href="mailto:mi@yandex.ru">mi@yandex.ru</a>>:</div><blockquote><div>á ×ÏÔ ÜÔÏ - ÓÕÐÅÒ ÒÅÛÅÎÉÅ, ÐÒÉÂÌÉÚÉÔÅÌØÎÏ ÔÏ, ÞÔÏ Ñ ÉÓËÁÌ ÏÄÎÏÓÔÒÏÞÎÉË ÐÏÞÔÉ ;))</div><div>ÓÐÁÓÉÂÏ, Ë ÔÏÍÕ ÖÅ, ËÁË Ñ ÐÏÎÉÍÁÀ, ÅÇÏ ÍÏÖÎÏ ÅÝÅ ÕÍÅÎØÛÉÔؚɠÎÁÐÉÓÁÔØ ÏÄÎÏÓÔÒÏÞÎÉË(ÐÏËÁ ÎÅ ÒÏÄÉÌÓÑ) :</div><div>šš</div><div><code>š</div><div><div>#!/perl -lan -F'_|-' --</div><div>@months{qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )} = š( '00' .. '11' );</div><div>$F[4] = {%months}->{ $F[4] };</div><div>$date = join '-', @F[ 5, 4, 3 ];</div><div>$R{ $F[0] } = { file => $_, date => $date }</div><div>š if !$R{ $F[0] }</div><div>š š š or $R{ $F[0] }{date} le $date;</div><div>}</div><div>š {</div><div>š print $R{$_}{file} for reverse sort keys %R;</div></div><div><code></div><div>š</div><div><ol><li>š<img alt="" /><img alt="" /><img alt="" />š ÏÔ šÍÅÎÑ šÎÁÓÔÉ šËÏÌÉ šÓÐÁÓÉÂÏ š (ÜÔÏ ÂÁÌÏ×ÁÌÁÓØ ÍÏÑ ÄÏÞØ)</li></ol></div><div>10.09.2011, 13:45, "Alexander Onokhov" <<a href="mailto:ccnweb@gmail.com">ccnweb@gmail.com</a>>:</div><blockquote>ñ Â ÓËÒÉÐÔ ÐÅÒÅÐÉÓÁÌ ÐÒÉÍÅÒÎÏ ÔÁË:<div><code></div><div>#!/perl -lan -F'_|-' --</div><div><div>$F[4] = { Jan => '01', Feb => '02', Mar => '03',</div><div>šš š š š šApr => '04', May => '05', Jun => '06',</div><div>šš š š š šJul => '07', Aug => '08', Sep => '09',</div><div>šš š š š šOct => š10, šNov => š11, šDec => š12 š}->{ $F[4] };</div><div>$date = join '-', @F[5,4,3];</div><div>$R{ $F[0] } = { file => $_, date => $date }</div><div>ššif ! $R{ $F[0] } or $R{ $F[0] }{date} le $date;</div><div>}{</div><div>print $R{$_}{file} for reverse sort keys %R;</div><div></code></div><div>ëÏÍÍÅÎÔÁÒÉÉ ÐÒÏÓÔÁ×ÉÔØ ÐÏ ×ËÕÓÕ</div><div>÷ÙÚÏך<br />perl <a href="http://script.pl">script.pl</a> confile</div><br /><div>2011/9/9 Nikolay Mishin <span dir="ltr"><<a href="mailto:mi@ya.ru">mi@ya.ru</a>></span><br /><blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Moscow PM<br /> <br /> ðÏÍÏÇÉÔÅ , ÅÓÔØ ÐÒÏÇÒÁÍÍÁ, ÓÏÒÔÉÒÕÀÝÁÑ ÆÁÊÌÙ:<br /> ÍÏÖÎÏ ÌÉ ÅÅ ÐÅÒÅÐÉÓÁÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ Schwartzian Transform<br /> ÔÉÐÁ @new = map { $_->[0] }<br /> šsort { $b->[1] <=> $a->[1] || $a->[2] cmp $b->[2] }<br /> šmap { [ $_, /=(\d+)/, uc($_) ] } @old;<br /> Õ ÍÅÎÑ ÞÔÏ-ÔÏ ÎÅ ÐÏÌÕÞÁÅÔÓÑ<br /> #ÓÏÄÅÒÖÉÍÏÅ confile<br /> # N<span><span><span>1089767</span></span></span>N_7_SWOPT_03-Jul-2011_<span><span><span>78919186</span></span></span>.xml<br /> # N<span><span><span>1089767</span></span></span>N_7_SWOPT_25-Jun-2011_<span><span><span>72745892</span></span></span>.xml<br /> # N<span><span><span>1089772</span></span></span>L_9_SWOPT_03-Jul-2011_<span><span><span>78979055</span></span></span>.xml<br /> # N<span><span><span>1089772</span></span></span>L_9_SWOPT_20-Jul-2011_<span><span><span>69380887</span></span></span>.xml<br /> # N<span><span><span>1089772</span></span></span>L_9_SWOPT_29-Jun-2011_<span><span><span>74754662</span></span></span>.xml<br /> open( CONSULTS, "confile" );<br /> @scons = <CONSULTS>;<br /> close CONSULTS;<br /> my %is_trade_id_unique;<br /> foreach ( reverse sort consort @scons ) {<br /> š šchomp;<br /> š šif ( $_ =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) {<br /> š š š šmy ( $trade_id, $date, $month, $row_num ) = ( $1, $2, $3, $4 );<br /> š š š šif ( !$is_trade_id_unique{$trade_id} ) {<br /> š š š š š šprint $_. "\n";<br /> š š š š š š$is_trade_id_unique{$trade_id} = 1;<br /> š š š š}<br /> š š}<br /> <br /> }<br /> <br /> #N<span><span><span>1089767</span></span></span>N_7_SWOPT_03-Jul-2011_<span><span><span>78919186</span></span></span>.xml<br /> sub consort {<br /> š š$aa = $a;<br /> š š$bb = $b;<br /> <br /> š# save our variables because our sort routine affects them. šIf I "chomp $a"<br /> š# that will actually change the line seen in the foreach loop that calls this.<br /> š šchomp $aa;<br /> š šchomp $bb;<br /> <br /> š š$aa =~ s/^ š*//;<br /> š š$bb =~ s/^ š*//;<br /> <br /> š šmy %months = (<br /> š š š šFY š=> 0,<br /> š š š šJan => 1,<br /> š š š šFeb => 2,<br /> š š š šMar => 3,<br /> š š š šApr => 4,<br /> š š š šMay => 5,<br /> š š š šJun => 6,<br /> š š š šJul => 7,<br /> š š š šAug => 8,<br /> š š š šSep => 9,<br /> š š š šOct => 10,<br /> š š š šNov => 11,<br /> š š š šDec => 12,<br /> š š);<br /> <br /> š šmy ( $trade_id, š$date, š$month, š$row_num );<br /> š šmy ( $btrade_id, $bdate, $bmonth, $brow_num );<br /> š šif ( $aa =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) {<br /> š š š š( $trade_id, $date, $month, $row_num ) = ( $1, $2, $months{$3}, $4 );<br /> š š}<br /> š šif ( $bb =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) {<br /> š š š š( $btrade_id, $bdate, $bmonth, $brow_num ) =<br /> š š š š š( $1, $2, $months{$3}, $4 );<br /> š š}<br /> <br /> š š š š $trade_id cmp $btrade_id<br /> š š š|| $month <=> $bmonth<br /> š š š|| $date <=> $bdate<br /> š š š|| $row_num <=> $brow_num;<br /> <br /> }<br /> <span style="color:#888888;"><br /> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br /> </span></blockquote></div><br /><br />-- <br />Alexander</div><span>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">http://moscow.pm.org</a><br /></span></blockquote><div>--<br />Nikolay Mishin</div><div style="background-image:initial !important;background-attachment:initial !important;background-origin:initial !important;background-clip:initial !important;background-color:transparent !important;overflow-x:visible !important;overflow-y:visible !important;text-align:left !important;display:none;background-position:initial initial !important;background-repeat:initial initial !important;padding:0px !important;margin:0px !important;"><div style="color:#fafafa !important;border-color:#000000 !important;border-width:0px !important;background-color:#363636 !important;font-size:16px !important;padding:8px !important;overflow:visible !important;background-image:-webkit-gradient(color-stop(),color-stop(),color-stop());text-align:left !important;">š</div><img style="cursor:pointer !important;background-color:rgba() !important;padding:3px 5px 0 !important;margin:0 !important;" src="http://www.google.com/uds/css/small-logo.png" alt="" /></div></blockquote><div>--<br />Nikolay Mishin</div><span>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">http://moscow.pm.org</a><br /></span></blockquote><div>--<br />Nikolay Mishin</div>