Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^3: Sorting dates with the Schwartzian Transform

by Anonymous Monk
on Aug 15, 2011 at 14:19 UTC ( #920305=note: print w/replies, xml ) Need Help??

in reply to Re^2: Sorting dates with the Schwartzian Transform
in thread Sorting dates with the Schwartzian Transform

I've Googled and tried a lot last week, but I'm stuck (on the syntaxis).

I hope you understand my message despite the wording

Actually it seems more like you're stuck on syntax and arrays.

You need to read perlintro and Basic debugging checklist and How do I post a question effectively? and References quick reference

Also, when you have a program, with real, named variables, talking about columns can get confusing , talk about your variables instead ;)

The code you pasted will never have a 12 element array, nor do you want one.

I would go back to

my @sorted = map substr($_, 8), sort map join('', (/(..)-(..)-(....)/)[2,1,0], $_), @dates; # DD-MM-YYYY
Don't get it? To understand, you would write a program like this
#!/usr/bin/perl -- use strict; use warnings; use Data::Dumper; my @dates = qw[ 08-15-2011 08-10-2011 08-05-2011 ]; print "\ndates ", Dumper( \@dates ); #~ my @firstTransform = map join('', (/(..)-(..)-(....)/)[2,1,0], $_) +, @dates; # DD-MM-YYYY my @firstTransform = map join('', ReorderForCmp($_), $_), @dates; # +DD-MM-YYYY print "\nfirstTransform ", Dumper( \@firstTransform ); my @firstSorted = sort @firstTransform ; print "\nfirsSorted ", Dumper( \@firstSorted ); my @finalTransform = map substr($_, 8), @firstSorted ; print "\nfinalTransform ", Dumper( \@finalTransform ); sub ReorderForCmp { my( $one ) = @_; my @date = $one =~ /(..)-(..)-(....)/; #~ return @date[2,1,0]; return $date[2], $date[1], $date[0]; } __END__
which produces this output
dates $VAR1 = [ '08-15-2011', '08-10-2011', '08-05-2011' ]; firstTransform $VAR1 = [ '2011150808-15-2011', '2011100808-10-2011', '2011050808-05-2011' ]; firsSorted $VAR1 = [ '2011050808-05-2011', '2011100808-10-2011', '2011150808-15-2011' ]; finalTransform $VAR1 = [ '08-05-2011', '08-10-2011', '08-15-2011' ];
So yes, it is possible to "map two columns date and time", just adjust sub ReorderForCmp to return iso-8601 style datetime ( YYYYMMDDHHMMSS)

Replies are listed 'Best First'.
Re^4: Sorting dates with the Schwartzian Transform
by Wobbel (Acolyte) on Aug 16, 2011 at 19:17 UTC

    I think it is time to make some excuses. I guess I'm a little bit desperate because of complete exhaustion. The last nine years I wrote a couple of Perlscripts and read/practised on a regular basis. Even our first two babyboys were no problem at all. But since eleven weeks, we got a lovely babygirl.

    Sleep(10000); doesn't work for her....

    If I look at my old code, It's easy to understand.

    But a new improvent with only a half line of code...(OK, three lines. I'm not a pro)

    I just don't see it anymore!

    Thanks for your patience and the advice / links. I know them all and a few more.

    Let me sleep for a week in a monastery or so and I will finish the last lines of code :-) .

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://920305]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2018-01-20 06:08 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (226 votes). Check out past polls.