in reply to Sorting, arrays and other problems
It seems like we are answering this kind of question a lot these days...
So here is a simplified Rosler-Guttman manoeuver, which sticks the field to sort on at the beginning of the data, sort on it (using the speed of the native sort) and then remove the field from the data:
# this should be read from the last line to the top one my @sorted= map { substr( $_, 8) } # [3]: remove the + date sort # [2]: sort aplph +abetically on the date map { $_= @{[split(/\s/, $_)]}[3] . $_} # [1]: get the da +te and add it at the beginning of the string <DATA>; print join "\n", @sorted; __DATA__ <b><a href="url">text</a></b> 20000407 text <b><a href="url">text</a></b> 20000409 text <b><a href="url">text</a></b> 20000408 text <b><a href="url">text</a></b> 20000507 text
Note that this breaks _really_ easily, especially using split to extract the date. If I wanted to use this for anything else than a one-shot script I would definitelly use some kind of HTML parser here.
|
|---|