http://www.perlmonks.org?node_id=968134


in reply to sort array

Your subroutine may work with a few changes. However, I rewrote it to try a simpler approach. Here is a sample program you can run.

#!/usr/bin/perl use strict; use warnings; my @lines = split /\n/, <<EOF; I need your help. I have an array containing sentences. I want to order the sentences according to a given word I am a nice boy You are a nice boy They are not good at all EOF print "$_\n" for order_line(@lines); sub order_line { return sort by_3d_word_from_right @_; } sub by_3d_word_from_right { { lc((split ' ', $a)[-3]) cmp lc((split ' ', $b)[-3]) } }