<div>проблема была в том, что я хотел решить проблему с помощью преобразования Шварца</div><div>и мне в этом очень помогли, многие выкладки были не столь очевидны,</div><div> к тому же задача - красивая</div><div>09.09.2011, 22:20, "Akzhan Abdulin" <akzhan.abdulin@gmail.com>:</div><blockquote>Я не понял проблемы. Любую программу можно переписать при знании исходного и целевого алгоритмов.<div>Зачем сюда приплетать кучу народу?<br /><br /><div>9 сентября 2011 г. 19:21 пользователь 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>1089767</span>N_7_SWOPT_03-Jul-2011_<span>78919186</span>.xml<br /> # N<span>1089767</span>N_7_SWOPT_25-Jun-2011_<span>72745892</span>.xml<br /> # N<span>1089772</span>L_9_SWOPT_03-Jul-2011_<span>78979055</span>.xml<br /> # N<span>1089772</span>L_9_SWOPT_20-Jul-2011_<span>69380887</span>.xml<br /> # N<span>1089772</span>L_9_SWOPT_29-Jun-2011_<span>74754662</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>1089767</span>N_7_SWOPT_03-Jul-2011_<span>78919186</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></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>