Я не понял проблемы. Любую программу можно переписать при знании исходного и целевого алгоритмов.
Зачем сюда приплетать кучу народу? 9 сентября 2011 г. 19:21 пользователь Nikolay Mishin <[email protected]> написал: > Hi Moscow PM > > Помогите , есть программа, сортирующая файлы: > можно ли ее переписать с использованием Schwartzian Transform > типа @new = map { $_->[0] } > sort { $b->[1] <=> $a->[1] || $a->[2] cmp $b->[2] } > map { [ $_, /=(\d+)/, uc($_) ] } @old; > у меня что-то не получается > #содержимое confile > # 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 > open( CONSULTS, "confile" ); > @scons = <CONSULTS>; > close CONSULTS; > my %is_trade_id_unique; > foreach ( reverse sort consort @scons ) { > chomp; > if ( $_ =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) { > my ( $trade_id, $date, $month, $row_num ) = ( $1, $2, $3, $4 ); > if ( !$is_trade_id_unique{$trade_id} ) { > print $_. "\n"; > $is_trade_id_unique{$trade_id} = 1; > } > } > > } > > #N1089767N_7_SWOPT_03-Jul-2011_78919186.xml > sub consort { > $aa = $a; > $bb = $b; > > # save our variables because our sort routine affects them. If I "chomp > $a" > # that will actually change the line seen in the foreach loop that calls > this. > chomp $aa; > chomp $bb; > > $aa =~ s/^ *//; > $bb =~ s/^ *//; > > my %months = ( > FY => 0, > Jan => 1, > Feb => 2, > Mar => 3, > Apr => 4, > May => 5, > Jun => 6, > Jul => 7, > Aug => 8, > Sep => 9, > Oct => 10, > Nov => 11, > Dec => 12, > ); > > my ( $trade_id, $date, $month, $row_num ); > my ( $btrade_id, $bdate, $bmonth, $brow_num ); > if ( $aa =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) { > ( $trade_id, $date, $month, $row_num ) = ( $1, $2, $months{$3}, $4 > ); > } > if ( $bb =~ m/(\w+_\d+_\w+)_(\d+)-([A-Za-z]{3})-2011_(\d+)[.]xml/i ) { > ( $btrade_id, $bdate, $bmonth, $brow_num ) = > ( $1, $2, $months{$3}, $4 ); > } > > $trade_id cmp $btrade_id > || $month <=> $bmonth > || $date <=> $bdate > || $row_num <=> $brow_num; > > } > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
