<?xml version="1.0" encoding="windows-1252"?>
<node id="968124" title="sort array" created="2012-04-30 14:37:54" updated="2012-04-30 14:37:54">
<type id="115">
perlquestion</type>
<author id="872655">
welle</author>
<data>
<field name="doctext">
&lt;p&gt; Hello Monks,&lt;/p&gt;
&lt;p&gt;I need your help.
I have an array containing sentences. I want to order the sentences according to a given word (i.e. the third from the left). &lt;/p&gt;
&lt;p&gt;I am a nice boy
You are a nice boy
They are not good at all &lt;/p&gt;
&lt;p&gt; What I found is the following (adapting it from Lingua::Concordancer):&lt;/p&gt;

 

&lt;code&gt;
sub order_line{  
    my @sorted_lines;
    foreach ( sort { _by_left( $a, $b ) } @lines ) { push @sorted_lines, $_ }
    print @sorted_lines;
}

sub _by_left {
	my ( $a, $b ) = @_;
	return lc( _on_left(  $a )) cmp lc( _on_left( $b )); 
	
}

sub _on_left {
	my ( $s ) = @_;
	my @words = split( /\s+/);
	my $word_level=3;
	return  $words[ scalar( @words ) - $word_level ];
}
&lt;/code&gt;
&lt;p&gt;Of course it doesn't work... &lt;/p&gt;</field>
</data>
</node>
